繁体   English   中英

运行jar文件时抛出java.lang.NoClassDefFoundError

[英]java.lang.NoClassDefFoundError thrown when running jar file

我试图在Mac上运行我的jar文件(还没有尝试过任何其他平台)。 当我使用java -jar MyApp.jar运行时,我收到以下错误

堆栈跟踪:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at tabalchi.MyLogger.getLogger(MyLogger.java:51)
at tabalchiApp.TabalchiApp.printSystemProps(TabalchiApp.java:117)
at tabalchiApp.TabalchiApp.main(TabalchiApp.java:37)

所以,正如你所看到的那样,主类是被认可的。 这是清单文件。 --->

Manifest-Version: 1.0
Class-Path: . jars/log4j-1.2.16.jar jars/jfugue-4.1.0-20120125.jar jars/gervill.jar jars/AppleJavaExtensions.jar  
Main-Class: tabalchiApp.TabalchiApp
SplashScreen-Image: tabalchiApp/resources/splash.png

<---和jar文件中的文件夹结构如下。 --->

META-INF/MANIFEST.MF
jars/AppleJavaExtensions.jar
jars/gervill.jar
jars/jfugue-4.1.0-20120125.jar
jars/log4j-1.2.16.jar
tabalchiApp/TabalchiApp.class   <-- this is the main class
tabalchiApp/otherClasses.....class

<---

我已阅读很多关于运行.jar文件的帖子,但没有一个解决方案对我有用。 我真的很感谢你对这个的帮助。

我是通过从eclipse导出来创建jar文件的。 如果我导出到可运行的jar文件,那么我无法控制清单文件的制作。 我需要在清单文件中添加启动图像。 我对runnable jar export有一些其他问题。 因此这条道路。

看来, log4j是missing.it期待jars/log4j-1.2.16.jar在类路径中。

jars/log4j-1.2.16 

应该在文件夹结构下。

 jars/log4j-1.2.16.jar

您要在哪个目录中使用:java -jar MyApp.jar

您可以在类路径中指定包/目录以确保找到它们。

好的,所以根据这个链接,

http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html

Class-Path标头指向本地网络上的类或JAR文件,而不是JAR文件中的JAR文件或可通过Internet协议访问的类。 要将JAR文件中的JAR文件中的类加载到类路径中,必须编写自定义代码来加载这些类。 例如,如果MyJar.jar包含另一个名为MyUtils.jar的JAR文件,则不能使用MyJar.jar清单中的Class-Path标头将MyUtils.jar中的类加载到类路径中。

所以,似乎我不能在我的jar文件中包含其他jar文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM