Eclipse Java项目使用外部JAR出现NoClassDefFoundError的解决方法
问题背景
我计划在Java项目中调用jfree生态下的jcommon、jfreechart和plotter类绘制图表,用于对比自行实现的多套排序算法的运行时间复杂度。代码编译阶段无异常,但运行测试时抛出以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: Plotter/Plotter at Sorting.bubbleVsQuick(Sorting.java:230) at Sorting.main(Sorting.java:15) Caused by: java.lang.ClassNotFoundException: Plotter.Plotter at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519) ... 2 more
我曾按照通用教程操作:我的项目 => 属性 => Java Build Path => 库 => 添加外部JAR指定依赖包路径,问题没有解决,也没有找到其他可用的解决方案。
解决方案
经排查,该问题由Eclipse构建路径的默认配置逻辑导致,修复步骤如下:
- 进入项目属性页,打开「Java Build Path」下的「库」选项卡
- 不要使用库标签的默认选项,切换到classpath子标签后,再添加所需的外部JAR文件路径即可
Eclipse不会自动完成该配置,这就是即便包资源管理器中能看到对应类,运行时也无法正常加载的原因。
内容的提问来源于stack exchange,提问作者RONOLULU
相关产品推荐
相关产品推荐

