java.lang.NoClassDefFoundError - 生成可执行jar

时间:2014-05-16 05:06:55

标签: java jar classpath noclassdeffounderror

我在Windows 2000上创建了我的JAR,它包含java版本1.5,其中包含以下目录/文件:

  • manifest.txt
  • 玉米
  • LIB

lib 包含我想成为JAR一部分的所有JARS。 com 包含我的类文件,下面是manfiest.txt文件

Main-Class: com.as.qst.result.ResultTriggerSchedular 
Class-Path: lib/axis.jar lib/c3p0-0.9.1.1.jar lib/commons-discovery-0.2.jar lib/commons-logging-1.0.4.jar lib/jaxrpc.jar lib/log4j-1.2.16.jar lib/medplus-hub-8.2-wsclients.jar lib/medplus-hub-13.1-jaxws-clients.jar lib/quartz-2.2.1.jar lib/quartz-jobs-2.2.1.jar lib/saaj.jar lib/slf4j-api-1.6.6.jar lib/slf4j-log4j12-1.6.6.jar lib/ wsdl4j-1.5.1.jar lib/xercesImpl.jar com\as\qst\result

我使用以下命令生成我的JAR

  jar cvfm test.jar manifest.txt com lib

它已成功创建了一个JAR文件,但是当我尝试使用

运行它时
java -jar test.jar

它不会执行并抛出异常。我对版本为1.7的Windows 7使用了相同的过程,即使没有manifest.txt com\as\qst\result中的类文件路径,它也能正常工作。除了在清单中定义之外,更多的是与类路径有关吗?为什么它在Windows 7中运行?

1 个答案:

答案 0 :(得分:1)

您的类路径条目中不需要类文件路径。因此,不要将com\as\qst\result添加到class-path

此外,您不得将其他jar文件打包在runnable jar中。

必须在jar文件所在的文件夹中提供其他必需的jar文件(可能在单独的文件夹中)并添加当前目录"。" (不含引号)到class-path

希望这有帮助。

修改

刚刚找到这个Stackoverflow Link。这可能会为您提供更多见解。请仔细阅读。