【问题标题】:NoClassDefFoundError: ... Caused by ClassNotFoundExceptionNoClassDefFoundError: ... 由 ClassNotFoundException 引起
【发布时间】: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


【解决方案1】:

请确保您的编译时和运行时代码采用相同版本的jar文件。如果存在jar版本冲突,您可能会遇到上述问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    相关资源
    最近更新 更多