【发布时间】:2019-05-14 23:43:47
【问题描述】:
我有一些由另一组人编写的简单代码(目前不可用),其中引用了我得到的一些 jar 文件。当我编译代码时,一切都很好,但是一旦代码尝试创建在其中一个 jar 文件中定义的类的实例,我就会得到 java.lang.NoClassDefFoundError。我对这个问题进行了大量研究,一切都表明我的类路径在运行时存在问题。但是,当我在运行时打印类路径时,我会看到所有 jar 文件,并且它们似乎具有正确的路径。运行时类路径似乎也与编译时类路径匹配,所以这似乎不是问题。
我应该提一提:我使用的是 JDK 1.8,而我相信这些 jar 文件是使用 JDK 1.7 创建的。我看到的其他解决方案都没有提到这一点,但有没有可能这是版本兼容性问题?我无法通过批准的方法获得 JDK 1.7,但如果我能令人信服地证明这将解决我的问题,我可能能够获得批准安装的旧版本。
如果不可能是版本问题,我应该从哪里开始?我找到的每个答案似乎都不适用于我的情况,但是如果您能指出我可能错过的答案或有解决方案,我将不胜感激。 NetBeans 特定的答案很有帮助,但不是必需的。谢谢!
编辑:作为参考,这里是我用来在运行时打印类路径的代码:
ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader)cl).getURLs();
for(URL url: urls){
System.out.println(url.getFile());
}
【问题讨论】:
-
缺少什么类,你如何“打印类路径”?
-
查看主要问题中的编辑,了解我用于打印类路径的代码。缺少的类是第三方提供的 jar 文件的一部分。y
-
我以前遇到过这种情况,这是由于静态初始化程序中的一些异常——你可以看到一些例子@javarevisited.blogspot.com/2011/06/…——编辑:这是可能的原因之一
-
如果可能,请分享整个堆栈跟踪。
-
这是一个 CLI 程序还是在某种容器中运行?
标签: java exception noclassdeffounderror