java - 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
工作正常