我已经编译了一个JAR文件,并在清单中指定了Main-Class(我使用了Eclipse Export函数)。我的依赖项都在标有的目录中lib。在指定应将JAR文件lib/*用作类路径的同时,我似乎无法获得关于如何执行我的JAR文件的直接答案。
lib
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参数将被忽略。
-jar
-cp
从文档中:
使用此选项时,JAR文件是所有用户类的源,而其他用户类路径设置将被忽略。
你也不能将所需的jar文件“包含”到另一个jar文件中(你需要提取它们的内容并将.class文件放入你的jar文件中)
你有两种选择:
将lib目录中的所有jar文件都包含到清单中(你可以在其中使用相对路径) 使用以下命令在命令行中指定所有内容(包括 jar)-cp: java -cp MyJar.jar:lib/* com.somepackage.subpackage.Main
-cp: java -cp MyJar.jar:lib/* com.somepackage.subpackage.Main