gpt4 book ai didi

java - 在 Unix 上运行 .jar 文件总是会解析 NoClassDefFoundError 异常

转载 作者:行者123 更新时间:2023-12-02 04:06:49 24 4
gpt4 key购买 nike

我正在开发一个小java程序,我想在unix机器上运行它。

首先,我编译了 .java 文件,没有任何错误。

javac CallACMDFromJAVA.java

然后我的 .class 文件被创建。

CallACMDFromJAVA.class

然后我使用 jar 命令创建一个可执行的 .jar 文件。

jar cfm cmd.jar manifest.txt CallACMDFromJAVA.class

到目前为止一切顺利。最后一个 cmd 给了我一个 cmd.jar 文件。但是当我想运行它时,突然出现一些错误。我输入:

java -jar cmd.jar

错误:

Exception in thread "main" java.lang.NoClassDefFoundError: CallACMDFromJAVA (wrong name: serviceCall/CallACMDFromJAVA)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

您需要有关 java 环境的更多信息或其他信息来帮助我吗?

最佳答案

您的类显然位于包 serviceCall 中。理想情况下,您应该使源目录结构与包结构相匹配,以便源文件位于名为 serviceCall 的目录中。即使没有这个,如果你用

编译它
javac -d . CallACMDFromJAVA.java

然后应该创建一个包含CallACMDFromJAVA.classserviceCall目录。在将其放入 jar 文件之前,您应该尝试直接运行它:

java serviceCall.CallACMDFromJAVA

...应该可以工作,而使用现有工作流程,java CallACMDFromJAVA 会失败并出现相同的错误。在将其放入 jar 文件之前,在不使用 jar 文件的情况下尝试总是值得的。

然后,您需要将 list 中的 Main-Class 更改为 serviceCall.CallACMDFromJAVA,并创建 jar 文件以包含 serviceCall目录,例如

jar cfm cmd.jar manifest.txt serviceCall

然后它应该可以工作。基本上,您需要 Main-Class 属性来引用完全限定的类名,并且需要相应的类文件位于 jar 文件内的合适目录中。

请注意,如果您使用良好的 IDE,所有目录结构都可能会为您处理。

关于java - 在 Unix 上运行 .jar 文件总是会解析 NoClassDefFoundError 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34202894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com