我试图将我创建的jar导入Eclipse中的项目。当尝试来自所谓的jar的任何调用时,我得到以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError
Caused by: java.lang.ClassNotFoundException
我认为这是由于类在编译时出现,而不是在运行时执行。
问题是:当我自己运行jar(没有导入)时,它按预期工作,具有所有功能。但我现在需要它作为一个更大的jar的一部分,而不改变运行时类路径(没有改变原始项目)。
如何实现?
@Edit
未找到或未找到的类是来自FastUtil库的ByteList。 线程" main"中的例外情况java.lang.NoClassDefFoundError:it / unimi / dsi / fastutil / bytes / ByteList
它被导入另一个Jar,我们称之为MyJar.jar; MyJar.jar完全可以作为一个独立的jar运行,因为它的目的是成为一个库,它本身就可以运行。
情况是:当我将MyJar.jar导入另一个项目时,它不再工作,我无法在新项目中使用它的方法和类。
可以使用java -jar MyJar.jar
从命令提示符运行MyJar.jar,它将打印它的测试页以显示它正在运行。
新项目编译,但是当它运行时,我得到了关于MyJar项目的类未找到的异常。
答案 0 :(得分:0)
您可以使用Maven Assembly Plugin添加相关JAR中的所有类,否则无法在不将类添加到类路径的情况下加载类。
如果您不想使用Maven,请手动将所有需要的类添加到JAR中。