在网上查了半天,寻找使用jar命令打包的方式,却发现大部分都没有说清楚,现在以一个简单的Hello.class文件打包为例,说一下具体的实现过程和注意事项。

1.将.class文件放到一个单独的文件夹,并在文件夹下新建一个空白的manifest.mf的清单文件,注意这个清单文件的名字可以任意取。

java 打包成一个可执行文件 java打包成可执行文件行jar_JAVA

2.在manifest.mf中加入如下内容:

java 打包成一个可执行文件 java打包成可执行文件行jar_清单文件_02


一定要注意那几行:号后面要加空格!!!否则打包时会报错。

java 打包成一个可执行文件 java打包成可执行文件行jar_java_03


文件最后也要加2个回车,多2个空行,否则可以打包,但运行时出现:

java 打包成一个可执行文件 java打包成可执行文件行jar_java_04


说明:

第一行指定清单的版本,若无,则JDK默认生成:Manifest-Version: 1.0

第二行指明创建的作者,若无,则JDK默认生成Created-By: 1.6.0_22(Sun Microsystems Inc.)

第三行指定主类所在类路径,

第四行指明程序运行的主类

其中,前3行可以省略不要。3.使用jar命令打包:

jar -cvfm h.jar manifest.mf Hello.class

或者jar -cvmf manifest.mf h.jar Hello.class

其中,-c表示生成打包文件,-v输出提示信息,-f 打包后生成的文件名, -m打包所需的清单文件。 f m 顺序一定要和后面的生成文件名以及清单文件一致。最后接需要打包的类文件。

打包成功后,java -jar h.jar,运行jar包。

java 打包成一个可执行文件 java打包成可执行文件行jar_JAVA_05

打包成jar文件后,如果还想直接在Windows下运行,则还需要将其继续打包成exe可执行文件。
使用exe4j软件,打包方法参考Java桌面程序打包成exe可执行文件

不过我在打包完成后,发现不能成功,需要解决一些问题,如下:
点击打包好的软件时会弹出“exe4j no jvm could be found on your system……”这样的错误提示,这个解决办法是新建一个环境变量;

变量名: EXE4J_JAVA_HOME 
 变量值: C:Program FilesJavajre8,一个指向jre的路径

因为我使用的64位的JRE,之后依然无法出错,提示EXE4J_JAVA_HOME应该指向一个32位的JDK或者JRE,所以继续下载安装一个32位的JRE,然后将EXE4J_JAVA_HOME指向32位的JRE安装路径即可。
注意到,在使用exe4J生成的exe软件时,会先弹出一个对话框,内容如下:
this executable was created with an evaluation version exe4j
这个主要是没有注册导致的,在welcome to exe4j的右下角有一个注册信息的地方,去找个注册码,就OK了。
通用注册码:L-g782dn2d-1f1yqxx1rv1sqd

最后加2个参考链接:
如何將編譯好的.class檔案打包成JAR?
Java打包可执行jar的方法