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

标签 java

我正在尝试在 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)

因此,如您所见,主类已被识别。 这是 list 文件。 --->

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 文件,那么我无法控制 list 文件的制作。我需要在 list 文件中添加启动图像。我在可运行的 jar 导出方面遇到了一些其他问题。因此这条路。

最佳答案

似乎缺少 log4j。它在类路径中期待 jars/log4j-1.2.16.jar

jars/log4j-1.2.16 

应该在文件夹结构下。

 jars/log4j-1.2.16.jar

关于运行 jar 文件时抛出 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11078713/

相关文章:

java - in.hasNextLine() 在 Java 中永不终止

java - 使用线程和信号量读取和写入文件

java - 获取 JSTL 页面表上的 JSON 数据

java - 用户输入内容后,JSP页面不会移动到另一个页面

java - 使用正则表达式获取字符串中的数字

java - 即使我关闭了netbeans,JavaDB中的 "start server"怎么办?

java - 使用增强型 for 循环和传统 for 循环打印从 toarray() 方法返回的数组之间的区别

java - 字段 'myField'的类型是具体类 'MyClass'

java - 如何使用操作系统的默认文件选择器? java

java - 后缀堆栈计算器