exe4j:jar包转换成exe应用程序 详细使用教程

1、前言

最近工作中碰到的需求:要求做一款桌面应用程序,用于连接Linux系统并具有运维功能的工具,要求win运行,通过界面操作,但界面不要求很漂亮。

由于我本身主攻Java,后端相对熟悉,经过一番搜索了解到:

  1. 首先Java开发GUI不是主流
  2. 在Java开发GUI的历史中,第一阶段awt,第二阶段swing和swt,第三阶段是javafx,因此选定JavaFX进行开发。
  3. jar包完成后,希望包装成exe提供。

假设jar包已经写好的情况下,一定会碰到的问题是jar包怎么包装成exe应用程序,从而提供给其他人支持进行运维操作,并且要解决现场的win上没有jre环境的问题。

经过一番搜索,发现可以借助exe4j这款工具,那么这篇文章就是介绍一下exe4j的安装和使用,来完成jar包到exe应用程序的转换。

2、准备

准备工作:

  1. 一个已经完成并且可以正常启动的jar包。
  2. exe4j,一个可以将jar转换成exe的工具,按照下面的步骤安装和激活即可。

3、exe4j的安装和激活

步骤:

  1. 下载地址:https://www.ej-technologies.com/download/exe4j/files

    进入网址,选择需要的版本,点击下载即可。注意,exe4j 6.0需要jdk版本为1.8及以上。

    下载完成很简单,基本上直接下一步就可以搞定。

    exe4j:jar包转换成exe应用程序 详细使用教程

  2. 安装完成后运行软件,点击Enter License。

    exe4j:jar包转换成exe应用程序 详细使用教程

    exe4j:jar包转换成exe应用程序 详细使用教程

    用户名和公司随便填写即可,注册码下面的随便复制一个即可。

    A-XVK258563F-1p4lv7mg7sav
    
    A-XVK209982F-1y0i3h4ywx2h1
    
    A-XVK267351F-dpurrhnyarva
    
    A-XVK204432F-1kkoilo1jy2h3r
    
    A-XVK246130F-1l7msieqiwqnq
    
    A-XVK249554F-pllh351kcke50
    
    A-XVK238729F-25yn13iea25i
    
    A-XVK222711F-134h5ta8yxbm0
    
    A-XVK275016F-15wjjcbn4tpj
    
    A-XVK275016F-15wjjcbn4tpj 
    

4、jar包装成exe的操作步骤

步骤:

  1. 选择"JAR in EXE" mode,进入下一步。

    exe4j:jar包转换成exe应用程序 详细使用教程

  2. 输入应用名称(打包后程序的名字)和输出路径(打包后程序保存的路径),点击下一步。

    exe4j:jar包转换成exe应用程序 详细使用教程

  3. 选择"GUI application",必须填写exe运行程序名,图标路径可以忽略,这里不勾选“电脑上只能运行一个程序”的选项。

    exe4j:jar包转换成exe应用程序 详细使用教程

  4. 点击高级选项,选择“Redirection”,不修改默认错误日志输出路径,点击下一步。

    exe4j:jar包转换成exe应用程序 详细使用教程

    exe4j:jar包转换成exe应用程序 详细使用教程

  5. Service options页面直接点击下一步,Version Info页面直接点击下一步。

    exe4j:jar包转换成exe应用程序 详细使用教程

  6. 如果是64位操作系统,需要勾选,点击下一步。

    exe4j:jar包转换成exe应用程序 详细使用教程

  7. Manifest options页面直接点击下一步。

    exe4j:jar包转换成exe应用程序 详细使用教程

  8. 导入你想要转化成exe的jar,以及项目中所有依赖的jar包。

    exe4j:jar包转换成exe应用程序 详细使用教程

    exe4j:jar包转换成exe应用程序 详细使用教程

  9. 添加运行的主类,点击下一步。

    exe4j:jar包转换成exe应用程序 详细使用教程

  10. 配置JRE版本,选择高级选项中的“Search sequence”。

    exe4j:jar包转换成exe应用程序 详细使用教程

  11. 将本地的jre复制到exe输出路径,以便后续提供给没有jre环境的其他人使用,并且点击“+”,添加本地的jre

    exe4j:jar包转换成exe应用程序 详细使用教程

    • 这个目录就是我在步骤2配置的输出路径。

    exe4j:jar包转换成exe应用程序 详细使用教程

    • 上图是我本地jre的目录

    exe4j:jar包转换成exe应用程序 详细使用教程

    • 添加本地的jre,这里可以直接用相对路径,即当前目录下的jre

    这一步如果不配置,exe到了其他人电脑上会报错提示找不到类,如下:

    java.lang.NoClassDefFoundError: javafx/application/Application
    	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
    	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
    	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
    	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
    	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
    	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    	at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:80)
    	at com.exe4j.runtime.WinLauncher.main(WinLauncher.java:94)
    Caused by: java.lang.ClassNotFoundException: javafx.application.Application
    	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    	... 11 more
    
  12. 将添加的jre上移到队列首位,点击下一步。

    exe4j:jar包转换成exe应用程序 详细使用教程

    exe4j:jar包转换成exe应用程序 详细使用教程

  13. 选择“Client HotSpot VM”,点击下一步。

    exe4j:jar包转换成exe应用程序 详细使用教程

  14. 后续的两个页面都直接点击下一步。

    exe4j:jar包转换成exe应用程序 详细使用教程

    exe4j:jar包转换成exe应用程序 详细使用教程

  15. exe转换完成,可到输出目录下找到并双击运行。

    exe4j:jar包转换成exe应用程序 详细使用教程

    exe4j:jar包转换成exe应用程序 详细使用教程

  16. 测试成功后,可以将exe连同jre一起打包到其他人电脑上,测试是否可以运行。都可以的话,就大功告成了!

使用过程中有问题请留言或私信!

上一篇:vue-项目试手 习惯打卡(1)


下一篇:用户交互,流程控制