Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法运行jar文件-NoClassDefFoundError_Java - Fatal编程技术网

Java 无法运行jar文件-NoClassDefFoundError

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

我有一个名为“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.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文件所在的目录中?