什么是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.0Created-By: 11 (Oracle Corporation)
  • 此时的JAR包是无奈被执行的,因为不晓得那个main函数须要被执行。所以咱们加上Main-Class来指定须要执行的main函数。须要留神的是:1、Main-Class须要指定的main函数所在类的全路径名,2、冒号之后肯定要跟英文的空格,3、整个文件最初有一行空行)。批改后的残缺文件如下:

    Manifest-Version: 1.0Created-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