java ClassNotFoundException/NodeFound在运行时运行,但导入的类可以自己运行吗?
我正在尝试将我在Eclipse中创建的jar导入到我的项目中。在尝试从所谓的jar调用时,我得到以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError
Caused by: java.lang.ClassNotFoundException
我认为这是由于类在编译时存在,但在运行时没有执行
问题是:当我自己运行jar时(没有被导入),它可以按照预期工作,具有所有功能。但是我现在需要它作为一个更大的jar的一部分工作,而不改变运行时类路径(对原始项目没有这样做)
如何才能做到这一点
@编辑
未找到的类或未找到的def是FastUtil库中的ByteList。 线程“main”java中出现异常。lang.NoClassDefFoundError:it/unimi/dsi/fastutil/bytes/ByteList
它被导入到另一个Jar中,我们称之为MyJar。罐子我的罐子。jar作为一个独立的jar可以完美地运行,因为它的目的是成为一个库,并且它可以自己运行
情况是:当我导入MyJar时。jar到另一个项目,它将不再工作,我不能在新项目中使用它的方法和类
我的罐子。jar可以通过java -jar MyJar.jar
从命令提示符运行,它将打印它的测试页面以显示它正在工作
新项目可以编译,但是当它运行时,我得到了关于MyJar项目的类not found异常
# 1 楼答案
您可以使用Maven Assembly Plugin添加相关JAR中的所有类,否则在不将类添加到classpath的情况下无法加载类
如果您不想使用Maven,那么将所有需要的类手动添加到您的JAR中