今天,无意中翻出了N年之前年少青涩时写的一个java awt的程序,在想验证某个问题的时候,希望它能以jar包的形式独立运行,而不是在ide中运行。所以就想把它手动打成可执行jar包。
例如Hello.java
源代码中有无包名,后面的操作有些许不同,注意区别。
进入test目录,执行如下命令,生成class文件
java Hello.java
进入test目录,执行如下命令,初步生成jar文件,如果有多个class文件,则在命令最后加空格追加就可以
jar -cvf Hello.jar Hello.class
如果提示jar命令不存在,可以参考此篇文章解决执行jar命令报错:jar不是内部或外部命令,也不是可运行的程序
执行如下命令,在class文件同级目录会生成一个META-INF
目录,里面有一个MANIFEST.MF
文件。
jar -xvf Hello.jar
使用文件编辑器打开MANIFEST.MF
文件,添加Main-Class
内容
Hello.java里不带包名
Manifest-Version: 1.0
Created-By: 11.0.10 (Oracle Corporation)
Main-Class: Hello
Hello.java里带包名
Manifest-Version: 1.0
Created-By: 11.0.10 (Oracle Corporation)
Main-Class: test.Hello
修改完毕后记得保存。
再次使用jar命令进行打包,这里同样要注意源代码中有无包名方法有所区别。
#Hello.java里不带包名,在java文件同目录执行
jar -cvfm Hello.jar META-INF/MANIFEST.MF Hello.class
#Hello.java里带包名,在包名目录同级目录执行
jar -cvfm Hello.jar test/META-INF/MANIFEST.MF test/Hello.class
使用java -jar Hello.jar
或者直接双击jar包,能正常运行代表打包成功。
-c 创建一个jar包
-t 显示jar中的内容列表
-x 解压jar包
-u 添加文件到jar包中
-f 指定jar包的文件名
-v 输出详细报告
-m 指定MANIFEST.MF文件
-0 生成jar包时不压缩内容
-M 不生成清单文件MANIFEST.MF
-i 为指定的jar文件创建索引文件
-C 可在相应的目录下执行命令
Java:打包成jar包
上一篇:python sympy库
下一篇:深度学习笔记-2.自动梯度问题