我编译了一个JAR文件并在 list 中指定主类(我使用了 Eclipse Export 函数)。我的依赖项都位于标有 lib
的目录中。我似乎无法得到关于如何执行 JAR 文件的直接答案,同时指定它应该使用 lib/*
作为类路径。
我已经尝试过:
]$ java -jar -cp .:lib/* MyJar.jar
]$ java -cp .:lib/* -jar MyJar.jar
]$ java -cp .:lib/* com.somepackage.subpackage.Main
等等...
每个都会给出一个错误:
Error: Could not find or load main class ....
或给出 NoClassDefFoundError
指示未找到库。
我什至尝试重新制作 JAR 文件并包含 lib
目录和内容,但仍然没有骰子...
如何从命令行执行 JAR 文件并指定要使用的类路径?
最佳答案
当您指定-jar
时,-cp
参数将被忽略。
When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored.
您也不能将所需的 jar 文件“包含”到另一个 jar 文件中(您需要提取它们的内容并将 .class 文件放入您的 jar 文件中)
您有两个选择:
- 将
lib
目录中的所有 jar 文件包含到 list 中(您可以在其中使用相对路径) - 使用
-cp
在命令行上指定所有内容(包括您的 jar):
java -cp MyJar.jar:lib/* com.somepackage.subpackage.Main
关于java - 从命令行运行 JAR 文件并指定类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55820444/