如何使用命令行编译和生成可执行jar包

为什么要使用jar

jar文件的全称是Java Archive File ,是 Java 的一种文档格式,它非常类似 ZIP 文件——准确的说,它的编码方式和 ZIP 文件完全一致,所以也叫它jar文件包。
JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。
总之,如果你不想丢给别人一堆编译出来的class拿去运行,打包成jar文件就对了

准备工作

  • 首先是一份可以执行的.java源码
  • 其次,你的电脑总得有配好环境变量的jdk工具链吧
    准备好了这些,就可以准备开始了
1. 编译.java源码

使用javac -encoding <源文件编码> <源文件名>
将你的.java源码编译为class文件,如果源文件有多个,记得加上多文件编译选项
这里以我工程目录下Test包内test.java为例,执行javac -encoding UTF-8 test.java
会产生一个或多个.class文件(内部类会单独编译出.claa文件)
编译生成class文件.png

2. 创建与包名对应的目录

我们需要将编译出来后的class文件放到对应的包名目录下,比如我的test.java开头声明在package Test;下,那么我们就需要把test.java编译出来的所有.class文件放到一个新建,注意是新建Test文件夹里
注意这里目录的名字不能错,且每一个包对应的.class文件都不能放错,否则会导致生成的jar包无法运行

处理完成后应该是这个样子
创建包名目录.png

3. 生成jar

首先需要命令窗口CD到新建包名目录的上层,注意是上层目录,然后执行jar -cef <main方法所在的类(含包名)> <生成的文件名> <包名目录>...来完成打包。
其中,c代表生成新的jar包;
e代表可执行的类,亦即main方法所在的类。书写时要加上包名,在本例中是后面的Test.test
f代表生成的jar包的名称,在本例中是Aim.jar。此包名可以随意命名,没有规定;
最后面的这个参数表示将新建包名目录Test下的所有文件都打包放到新的jar包中。

于是,执行如下命令:
jar -cef Test.test Aim.jar Test

执行完毕后会在上层目录中得到Aim.jar

生成jar包.png

双击可以正确执行

运行jar包.png