首页 > 解决方案 > NoClassDefFoundError 通过切换到另一个项目

问题描述

我在这里阅读了很多关于 NoClassDefFoundError 的答案,但不知何故我找不到解决我问题的答案。也许我没有足够的经验将其转化为我的问题。

无论如何,我有一个项目(通过 git 导入),其中包含一个包和许多有用的功能。还有一个包含一些演示的包,它们工作得很好。

如果我现在在自己的项目中复制其中一个演示,我会收到错误消息

线程“main”中的异常 java.lang.NoClassDefFoundError: org/jfree/data/xy/XYDataset at net.[...]

我认为必须有一个简单的解决方案,因为它在另一个项目中运行。

感谢您抽出宝贵的时间。

标签: javaeclipsenoclassdeffounderror

解决方案


当 Java 虚拟机无法在运行时找到在编译时可用的特定类时,Java 中的 NoClassDefFoundError 就会出现。例如,如果我们有一个类的方法调用或访问一个类的任何静态成员,并且该类在运行时不可用,那么 JVM 将抛出 NoClassDefFoundError。

  • 该类在 Java 类路径中不可用。
  • 您可能正在使用 jar 命令运行程序,并且该类未在清单文件的 ClassPath 属性中定义。
  • 任何启动脚本都会覆盖 Classpath 环境变量。
  • 因为 NoClassDefFoundError 是 java.lang.LinkageError 的子类,所以如果它的依赖项之一(如本机库)可能不可用,它也会出现。
  • 如果您在 J2EE 环境中工作,多个 Classloader 之间的 Class 的可见性也会导致 java.lang.NoClassDefFoundError,请参阅示例和场景部分进行详细讨论。

推荐阅读