最近写了个小工具,但是java写的,给朋友用的时候不能直接用,因此学习了一下java打包成exe。

众所周知,java需要jvm环境,所以打包的时候需要把稍微轻一点的jre打包进去。接下来是详细步骤。

java程序打包成jar

这个在idea中就可以完成了,需要注意的是需要把依赖都打进去,俗称的胖包,这里用pom的插件,会比较方便。这里同时需要指定程序入口。

<plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>程序入口</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

然后执行打包命令

mvn clean package

会获得一个jar-with-dependencies尾缀的胖包。

再准备jre文件,和刚才的jar放在同级目录里。我在下文重命名成jre文件了。

(jre文件一般在这个目录里)

java程序innosetup打包exe_hive

安装exe4j

工具从官网即可下载,傻瓜式安装,不再赘述。

文件目录

因为后面使用的是相对路径,所以需要强调一下文件的位置

java程序innosetup打包exe_开发语言_02


jre: 就是上面步骤复制过来,重命名的

SQLParse… : 就是上面打包的jar

其他是我程序需要读的文件,可以忽略。主要是jre 和 jar在一个层级里。

开始打包

license

这里change license,可以避免每次打开的一个报错。

![在这里

java程序innosetup打包exe_java_03


秘钥许可证

L-g782dn2d-1f1yqxx1rv1sqd

其他随便填

》下一步

java程序innosetup打包exe_jar_04

这里需要写你的 程序名 和 exe输出的目录

java程序innosetup打包exe_jar_05

》 next

填可执行文件的名字
然后点高级选项,选择 32/64

java程序innosetup打包exe_开发语言_06

依次填vm parameter
右边的 + 号,添加 jar包。

java程序innosetup打包exe_hive_07

选择jar包时,默认是全路径,需要把前面的删除,只留包名就行

java程序innosetup打包exe_hive_08

记得写main class 这里在最开始打包的时候已经做过,保持一致。

》 next

这里是最低和最高版本

然后高级选项,search sequence

java程序innosetup打包exe_开发语言_09

把三个原有的全部删除,添加自己的jre

java程序innosetup打包exe_java_10

java程序innosetup打包exe_开发语言_11

java程序innosetup打包exe_hive_12

java程序innosetup打包exe_jar_13


注意 这里是相对路径

》 next

接下来全是next,没有特别的地方。exe文件就出现了。

发给别的时候,要带着jre文件,这样就在没有java环境的地方执行了。