Java 无法运行jar文件-NoClassDefFoundError
我有一个名为“TJXLineFilterPlugin”的jar文件。MANIFEST.MF的值为Java 无法运行jar文件-NoClassDefFoundError,java,Java,我有一个名为“TJXLineFilterPlugin”的jar文件。MANIFEST.MF的值为 Manifest-Version: 1.0 Class-Path: c:\stdintjbt\java\lib\ojdbc14.jar c:\stdintjbt\java\lib\commons-lang-2.0.jar c:\stdintjbt\java\lib\jitterbit-plugin-sdk.jar c:\stdintjbt\java\lib\jitterbit-xml-utils.j
Manifest-Version: 1.0
Class-Path: c:\stdintjbt\java\lib\ojdbc14.jar c:\stdintjbt\java\lib\commons-lang-2.0.jar c:\stdintjbt\java\lib\jitterbit-plugin-sdk.jar c:\stdintjbt\java\lib\jitterbit-xml-utils.jar .
Created-By: 1.6.0_35 (Sun Microsystems Inc.)
Main-Class: org.jitterbit.plugins.tjx.TJXLineFilterPlugin
试跑
java -jar E:\TJXLineFilterPlugin.jar
jar中有一个文件夹strucrure
org/jitterbit/plugins/tjx/TJXLineFilterPlugin.class
但它会抛出这样的错误
Exception in thread "main" java.lang.NoClassDefFoundError: org/jitterbit/plugins
/tjx/TJXLineFilterPlugin
Caused by: java.lang.ClassNotFoundException: org.jitterbit.plugins.tjx.TJXLineFi
lterPlugin
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: org.jitterbit.plugins.tjx.TJXLineFilterPlugin. Pr
ogram will exit.
我还尝试使用类路径
cp
运行。转到包含jar文件的特定目录,然后执行以下命令:
java -jar TJXLineFilterPlugin.jar
特定类的路径在清单中始终是相对的。从不同目录执行jar将找不到所需的类。
NoClassDefFoundError
通常意味着已找到列出的类,但无法加载,因为找不到它的某些依赖项
我将向您指出清单文件中的类路径
条目:
Class-Path: ... c:\stdintjbt\java\lib\ojdbc14.jar .
首先,您应该列出依赖JAR,其中包含与所讨论的JAR(您的JAR)相关的路径,而不是像您那样使用绝对路径
其次,我认为
甚至不应该存在,因为内部JAR类路径与磁盘类路径不同,在磁盘类路径中,您使用
将当前工作目录添加到类路径中
更新
Java应用程序通常以以下结构交付/部署:
myapp/
applauncher (script or executable)
+ conf
+ logs
lib/
myapp.jar
a.jar
b.jar
...
对于本例,您的类路径
条目应为:
Class-Path: ojdbc14.jar commons-lang-2.0.jar jitterbit-plugin-sdk.jar jitterbit-xml-utils.jar
请共享用于运行jar文件的命令。我粘贴了,请检查它。您的意思是(相对路径),我应该将从属jar文件复制到主jar文件所在的目录中?