什么是 JAR 文件
- JAR 包就是 Java Archive File,是 Java 的一种文档格局。JAR 包与 ZIP 文件十分相似——实质上来说,它就是 ZIP 文件。JAR 文件与 ZIP 文件惟一的区别就是,在 JAR 文件中蕴含了一个 META-INF/MANIFEST.MF,这个文件是在生成 JAR 文件的时候主动生成的。
如何打 JAR 包
-
在 JVM 中理论解析的是.class 字节码而非.java 文件,且 JAR 包中个别不倡议蕴含代码源文件。所以,打 JAR 包的过程理论就将.class 文件打包。
编译
-
首先,新建一个 test.java 文件,外面写下 helloworld 的 java 代码。
class test {public static void main(String[] agrs) {System.out.println("hello world!"); } }
-
而后,执行 javac 命令编译 test.java。
javac test.java -d build
-
以上命令示意,将 test.java 编译后的.class 文件,放到 build 文件夹下。前面就能够去 build 文件夹中打 JAR 包。
批改 MANIFEST.MF
-
进入 build 文件夹后,首先须要执行上面命令来创立 MANIFEST.MF 文件。
jar -cvf test.jar test.class
- 以上命令中 c 示意要创立一个新的 JAR 包,v 示意创立的过程中在控制台输入创立过程的一些信息,f 示意给创立的 JAR 包命名
-
用解压软件关上 test.jar,会发现包里有一个 META-INF 文件夹,文件夹里有 MENIFEST.MF 的文件,用记事本关上,其内容可能是:
Manifest-Version: 1.0 Created-By: 11 (Oracle Corporation)
-
此时的 JAR 包是无奈被执行的,因为不晓得那个 main 函数须要被执行。所以咱们加上 Main-Class 来指定须要执行的 main 函数。须要留神的是:1、Main-Class 须要指定的 main 函数所在类的全路径名,2、冒号之后肯定要跟英文的空格,3、整个文件最初有一行空行)。批改后的残缺文件如下:
Manifest-Version: 1.0 Created-By: 11 (Oracle Corporation) Main-Class: test
打包
-
这时执行如下命令就能够打出能够间接执行的 JAR 包了。
jar -cvfm test.jar META-INF/MANIFEST.MF test.class
-
其中减少的参数 m 示意要定义 MANIFEST.MF 文件。
执行
-
最初执行如下命令就能在控制台中打印
hello world!
了。java -jar test.jar