首页 > 解决方案 > NoClassDefFoundError 使用“-jar”运行 Java 终端命令

问题描述

我在一个 jar 中有一个(Windows 10,Oracle SDK Java-12)Java 程序,它使用不同目录中另一个 jar 中的实用程序。

我无法使用该-jar格式成功运行 Java 终端命令;只有mainclass格式对我有用。如果使用-jar.

我从 Java 程序帮助(如下)和许多其他参考资料中推断出,-jar program.jar带有清单条目Main-Class: app.Main将等同于使用主app.Main类。如果使用两个不同的目录,它不起作用,我怎么错了?

不同目录的绝对路径似乎搞砸了。回答了大约 1000 个类似的问题,但我没有看到这个细节的答案。(请注意,我还使用清单类路径尝试了几次实验,这似乎与 -cp 选项的作用相似。)

c:>java

用法:java [options] mainclass [args...]

       (to execute a class)

或 java [选项] -jar jarfile [参数...]

       (to execute a jar file)

文件c:\AA\program.jar有一个清单Main-Class: app.Main

文件c:\BB\utility.jar

c:\java -cp c:\AA;c:\BB; -jar c:\AA\program.jar

Main 加载并获取 c:\BB\utility.jar 中类的异常 NoClassDefFoundError

c:\java -cp c:\AA\program.jar;c:\BB\utility.jar; -jar c:\AA\program.jar

与上面相同 Main 加载并获取 c:\BB\utility.jar 中类的异常 NoClassDefFoundError

c:\java -cp c:\AA\program.jar;c:\BB\utility.jar; -jar program.jar

无法访问 jarfile program.jar(令人失望的是它没有搜索类路径,但我认为这不是不合理的)

c:\java -cp c:\AA;c:\BB app.Main

找不到 app.Main(需要文件名或类路径上的“*”)

c:\java -cp c:\AA\program.jar;c:\BB\utility.jar; app.Main

工作正常

标签: javajar

解决方案


推荐阅读