java命令的-jar选项真正做了什么

时间:2014-06-04 09:04:11

标签: java jar

-jar命令的java选项是否也在运行main方法之前编译源代码? 我相信如此,但我想更好地了解内部流程,从手册页中您可以清楚地看到一个小的工作流程序列:

-jar
             Execute a program encapsulated in a JAR file. The first argument is the name of a JAR file instead of a startup class name. In order for this option to work, the manifest of the JAR file must contain a  line  of
             the form Main-Class: classname. Here, classname identifies the class having the public static void main(String[] args) method that serves as your application's starting point. See the Jar tool reference page and
             the Jar trail of the Java Tutorial @

但它没有提到它汇编了来源。

2 个答案:

答案 0 :(得分:2)

  

在运行main方法之前,java命令的-jar选项是否也编译源?

不,绝对没有。它只指定jar文件,在其中查找指定主类的清单,以及(通常)该类的类文件。它肯定没有编译任何东西。

答案 1 :(得分:1)

您发布的说明本身就是一切

Execute a program encapsulated in a JAR file. The first argument is the name of a JAR file instead of a startup class name. In order for this option to work, the manifest of the JAR file must contain a  line  of the form Main-Class: classname. Here, classname identifies the class having the public static void main(String[] args) method that serves as your application's starting point. See the Jar tool reference page and the Jar trail of the Java 

Jar文件包含一个清单文件,其格式为Main-Class: classname。这里给出了包含main方法的类。它很重要因为java中的独立应用程序在main方法开始执行。

运行打包在jar中的应用程序的命令如下: -

java -jar jar-file 

jar文件是jar的名称。

编辑: - 并明确回答你的问题,不,它不编译源代码。 jar本身包含已编译的类文件。您可以通过addin类文件创建jar

jar cvf Count.jar Count.class Sum.class

罐命令

cvf-options检查详细信息http://docs.oracle.com/javase/tutorial/deployment/jar/build.html

Count.class Sum.class - 分隔要添加到jar中的类文件(已编译源代码)空间的名称。