【发布时间】:2022-01-15 16:44:15
【问题描述】:
我已经构建了一台新机器并安装了新版本的 eclipse(Eclipse IDE for Java Developers 2021-06)。如果我运行一个旧项目,它可以工作。如果我创建一个新项目,则会出现以下错误。
线程“主”java.lang.NoClassDefFoundError 中的异常:net/crl/CRLibs/DBI
在 EnvList.(EnvList.java:143)
引起:java.lang.ClassNotFoundException:net.crl.CRLibs.DBI
代码中没有错误。
构建路径如下:
Line:143 is: static DBI db = new DBI();
DBI 在 crlibs jar 中定义。 在我的旧 Eclipse (Oxygen) 中,构建路径如下所示:
我尝试将 crlibs jar 添加到 Classpath,但它不允许我保存它(所有框都变灰)。 现在这段代码是我使用的模板的副本。原始版本运行良好,其构建路径看起来像来自 Oxygen 的路径。
如果我注释掉这一行,它将在下一次访问库时给出相同的错误。 似乎没有包含库的类路径。 注意 该库是用 Oxygen 构建的。我是否需要用新版本重建它,如果需要,它仍然适用于使用 Oxygen 构建的所有代码。 我该如何解决这个问题?
注意: 面向 Web 开发人员的 Eclipse Java EE IDE。 版本:Oxygen.3a 版本 (4.7.3a) 内部版本号:20180405-1200
并且 面向 Java 开发人员的 Eclipse IDE(包括孵化组件) 版本:2021-06 (4.20.0) 版本号:20210612-2011
编辑: 这是 .classpath 文件。:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="E:/Documents and Settings/Cliff/libs/crlibs.jar" sourcepath="E:/Documents and Settings/Cliff/Libs_src/CRLibs/src/net/crl/CRLibs">
<attributes>
<attribute name="javadoc_location" value="file:/E:/Documents%20and%20Settings/Cliff/Libs_src/CRLibs/CRLibs/doc/"/>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
jar 的路径在吗?
【问题讨论】:
-
您有
module-info.java文件吗?删除它可以解决您的问题吗?这也可能是由于使用 Java 16 而不是 Java 8(因为 Java 9 不再存在 100% 向后兼容性)。 -
@howlger 没有 module-info.java。我确实尝试过更改 Java #s,但没有任何变化。谢谢
-
@abra Eclipse 没有显示错误。正如我所说,它在旧的 Eclipse 中运行没有错误。
-
@abra 是的。您可以在图 1 中看到该库的构建路径。请参阅 edit2 了解运行依赖和命令行。
-
混合类路径和模块路径对我来说永远不起作用。我总是把所有东西都放在模块路径中。