在Maven中运行java程序有什么不同:
1: java -jar target / join-1.0-SNAPSHOT.jar ...
2: java -cp target / MavenTestApp-1.0-SNAPSHOT.jar org.koushik.javabrains.App
我认为第一个我需要jar。也许它与操作系统有关。 java -jar在windows上但是java -cp在linux上还是没关系?感谢
答案 0 :(得分:3)
区别在于JVM如何学习启动类(即需要先运行public static main(String[])
方法的启动类)。
-cp
选项,您可以在命令行中提供类的名称-jar
选项,类的名称取自JAR内的清单文件;类路径(如果有的话)也被丢弃。这是the documentation that explains how the entry point is set with the manifest。
如果你有一个捆绑在JAR文件中的应用程序,你需要一些方法来指示JAR文件中哪个类是你的应用程序的入口点。您可以使用清单中的Main-Class标头提供此信息,该标头具有以下一般形式:
Main-Class: classname
值classname是作为应用程序入口点的类的名称。
答案 1 :(得分:0)
在第一个中,您正在执行jar的manifest
文件中提到的默认主类,而在第二个中,.jar
文件保存在类路径中,主类的名称提到要执行