java -cp java -jar的区别

时间:2014-04-12 10:22:38

标签: java runtime

在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上还是没关系?感谢

2 个答案:

答案 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文件保存在类路径中,主类的名称提到要执行