Idea中将Java程序导成exe,在没有装JVM的机器上运行

一、将Java程序导成jar包

  1. 点击File—>Project Structure,点击Artifacts,Add一个JAR
    Idea中将Java程序导成exe,在没有装JVM的机器上运行

  2. 进入下图页面后,选择程序的Main Class
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
    Idea中将Java程序导成exe,在没有装JVM的机器上运行

  3. 为了要把程序所依赖的jar包全部包含进去,选择“copy to the output……”,注意下面要选择MANIFEST文件的存储位置,要新建一个文件夹一下,我直接在src下面新建了一个resource文件夹,点击OK
    Idea中将Java程序导成exe,在没有装JVM的机器上运行

  4. 对“output root”点击右键,选择创建目录
    Idea中将Java程序导成exe,在没有装JVM的机器上运行

  5. 我创建了一个名为“libs”的目录,将程序依赖的lib全部移到libs文件夹中
    Idea中将Java程序导成exe,在没有装JVM的机器上运行

  6. 点击创建的jar,下面会出现Class Path的配置页面,点击编辑按钮,在依赖的jar包前面配置一下文件夹名(在指定的jar文件之前增加“libs/”即刚才存放第三方Jar文件的新建目录的名称),之后点击OK、Apply
    Idea中将Java程序导成exe,在没有装JVM的机器上运行

  7. 回到Idea主页面,点击上面工具栏的“Build”,选择Build Artifacts,之后点击Build
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
    Idea中将Java程序导成exe,在没有装JVM的机器上运行

  8. 等待片刻,jar包就build好了,可以看到out目录下build成功的jar包
    Idea中将Java程序导成exe,在没有装JVM的机器上运行

二、将jar包转为exe文件

  1. 首先需要exe4J软件

链接:https://pan.baidu.com/s/1kRu9Gst7wcLPYtQ4Jy0YwQ
提取码:r1ai
自行下载,安装过程省略,一直下一步就行

  1. 打开exe4j软件,点击next,选择“JAR in EXE”mode,点击next
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
  2. 填写程序名和exe文件的存放位置
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
  3. 填写生成的exe文件的名称,注意不要直接next,点击左边工具栏的位数选择
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
  4. 如果系统是32位的,可以跳过这一步,如果是64位,勾选上这个选项,然后一直next
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
  5. 直到Configure Java invocation这一步,点击右边的加号
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
  6. 然后把程序所依赖的jar包和程序jar包全部添加进来
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
  7. 选择程序的入口Main class,结果如下,点击next
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
  8. 进入Configure JRE,设置一下JRE版本,点击左边的Search sequence
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
  9. 首先把默认的JRE的三个配置全部删掉(因为我们要运行在没有JVM的环境中,所以无论是根据注册表找还是根据JAVA_HOME来找,都找不到)
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
  10. 将jre文件夹拷贝到我们项目目录下,配置jre的相对路径,点击OK,next
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
  11. 一直默认next就好
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
  12. 之后exe就生成成功,结构如下,点击Ole.exe即可运行
    Idea中将Java程序导成exe,在没有装JVM的机器上运行
  13. 注意要把整个项目拷贝到其它机器,包括jre文件夹

注意:

1. exe4j是不可以将jre直接打包进exe中去的。但exe4j提供了一个搜索jre路径,这个路径可以是系统的环境变量,也可以是注册表,也可以是具体的某路径。
由于要实现在没有jvm的电脑上运行,搜索环境变量与注册表自然是无用功的了,所以只能搜某路径的。把jre的路径,加进去,就行了。但要注意一点:不然用绝对路径哦。我之前就是用绝对路径,导致无效的,而走了弯路的。比如可以用:./jre
2. 打成安装包时,要将生成的exe文件与jre一起打包。为了确认打完包,可以用,在没打包之前,点该exe文件,要确认能运行,不然打包要白忙了。

参考链接:关于将java程序导成.exe
参考链接:idea打包java程序(包含依赖的所有jar包)
参考链接:JavaFx项目打包成exe,并集成Jre