2014-01-11 22 views
0

我有一个奇怪的问题,我正在构建jar文件,我想知道是否有人可以将我指向任何手册或知识库文章,这将解释它... 无论如何,我的应用程序引用的外部iText-2.0.8.jar位于与我的输出jar相同的目录中: OUT_DIR: - my.jar - iText-2.0.8.jar main在my.jar类是com.company.Main和每当我试图运行jar如果通过-jar命令启动会抛出错误,但是-cp可以正常工作

java -cp "my.jar;iText-2.0.8.jar" com.company.Main 

我的应用程序运行良好。但只要我试图运行:

java -jar my.jar 

我得到的NoClassDefFoundError上课从iText的 - 2.0.8.jar 这里是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

我正在使用Intellij IDEA和一个大型Ant build.xml文件。 清单部分如下所示: user3185031

回答

0

-cp参数设置类路径。问题是你必须在运行时依赖中包含iText.jar。当你没有指定classpath的时候运行,那么你会得到NoClassDefFound错误,这是完全正常的行为。根据手动创建清单文件,可能你有问题。更好的选择是让IntelliJ IDEA为你生成它。要做到这一点,你必须:

  1. 在主菜单中,选择生成|生成Ant构建。
  2. 确保您检查“内联运行时类路径”复选框
  3. OK
+0

我已经这样做了,但不知何故,它甚至没有添加一个条目到我的jar目标,所以我不得不手动添加它... – user3185031

相关问题