我正在构建一个jar文件的奇怪问题,我想知道是否有人可以指向任何手册或知识库文章,这可以解释它... 无论如何,我的应用程序引用外部iText-2.0.8.jar,它与我的输出jar位于同一目录中: OUT_DIR: - my.jar - iText-2.0.8.jar my.jar中的主要类是com.company.Main,每当我试图运行
时java -cp "my.jar;iText-2.0.8.jar" com.company.Main
我的应用运行良好。但是一旦我想跑:
java -jar my.jar
我从iText-2.0.8.jar获取类的NoClassDefFoundError 这是my.jar的清单:
Manifest-Version: 1.0
Main-Class: com.company.Main
Class-Path: iText-2.0.8.jar
Name: rabbitmq-client
Specification-Title: AMQP
Specification-Version: 0.9.1
Specification-Vendor: AMQP Working Group (www.amqp.org)
Implementation-Title: RabbitMQ
Implementation-Version: 3.1.3
Implementation-Vendor: Rabbit Technologies Ltd. (www.rabbitmq.com)
这可能与iText jar也可以运行有关(它有自己的主类)吗?另一方面,NoClassDefFoundError清楚地表明了类路径错误...
答案 0 :(得分:0)
-cp参数设置类路径。问题是您必须在运行时依赖项中包含iText.jar。当你在没有指定classpath的情况下运行时,你会得到NoClassDefFound错误,这是完全正常的行为。根据手动创建清单文件,可能你出了点问题。更好的选择是使IntelliJ IDEA为您生成它。要做到这一点,你必须: