1、资源分享
exe4j 下载: https://pan.baidu.com/s/1wN50LGxClyZuOR9XZoDVGQ????????提取码:luck java 部分版本下载: https://pan.baidu.com/s/1q4PHkKUlSxk4LRU4DCopLg???????????提取码:luck
2、把项目打包成 exe 文件
2.1 把项目打包成 jar 包(用 fatjar 打包项目)
要打包的项目:
(1) 把 net.sf.fjep.fatjar_0.0.32.jar 包放入 eclipse\plugins 目录下
(2) 完成第一步后,在 eclipse 中对项目使用右键会新增红色框框框起来的功能
(3) 点击 Build Fat Jar 后的界面
(4) 点击 next
确认无误后点击 finish 弹出下面窗口点 ok ,项目打包成 jar 包完成。
(5) 打包后的效果
2.2 把 jar 包制作成可执行文件
(1) 运行 exe4j
(2) Welcome 直接点 next ,Project type 选中第二个 “JAR IN EXE” mode ,然后点 next
(3) Application info
(4) Executable info
示例的程序是有可视化界面的,所以选 GUI 程序 此处通过点 next 是到不了下图的,需要手动点击左侧栏。 同理,此处通过点 next 是到不了下图的,需要手动点击左侧栏
(5) Java invocation
点击 next
(6) JRE
如果想使代码在别的没有安装 Java 环境的电脑上运行:保持上截图中的 Advanced Options 不变,然后点击左侧栏中的 Search sequence。如果只是单纯的在本机中运行的话,可以跳过下面三张截图,直接 next 。
(7) 一直点 next
这时候报错: 分析:
截图开始 截图结束
我把三个默认配置全部删除后,又没在 exe 文件的同级目录下添加 java 运行环境 jdk 或 jre,所以只要添加进来就好了。
解决: 发给别人时,只需把含 exe 文件的文件夹发给别人,别人也可以在无 java 的环境下运行该程序。
3、遇到的问题
1、双击 exe4j 后,启动 exe4j 报错
No JVM could be found on your system. Please define EXE4J_JAVA_HOME to point to an installed 64-bit JDK or JRE or download a JRE from www.java.com.
解决1: 配置 JAVA_HOME 且 JAVA_HOME 为 jre 的目录不是 jdk 的目录。 初次配置 JAVA_HOME 的还需为系统变量中的 Path 变量添加一行。
注意:1、从 jdk-11 开始不再生成 jre 文件夹,不需要再添加 jre 文件夹的位置; 2、 jdk1.7 或者 jdk1.8 安装后,会自动在系统中注册一些东西,所以就算换了路径(更改环境变量中的 JAVA_HOME 的路径),在 cmd 窗口中输入命令 java -version 显示的还是原来的 jdk1.7 或者 jdk1.8 版本。 参考的:解决方法
2、运行时报错
2.1 忘记勾选 Generate 64-bit executable 产生的报错
The JAVA_HOME environment variable does not point to a working 32-bit JDK or JRE.
解决2.1: 回顾参考的流程,发现 4.Executable info 中的 32-bit or 64-bit 界面内的 Generate 64-bit executable 忘记勾选了
2.2 exe4j 使用的 java 版本太低,项目本身运行时的 java 版本太高产生的报错
java.lang.UnsupportedClassVersionError: compilationPrinciple/MainClass has been compiled by a more recent version of the Java Runtime (class file version 59.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:81)
at com.exe4j.runtime.WinLauncher.main(WinLauncher.java:94)
先看两张截图: 解决2.2: 方案一:删除 exe4j 中的三个默认配置文件,重新添加 jdk 路径,并且拷贝一份与配置同名的 jdk 跟 exe 文件放在一起。 方案二:新建 Java Project 项目,并且修改项目依赖的 jdk 环境,然后重新打包一份 jar 包,最后再用 exe4j 将新打包好的 jar 制作成 exe 文件。
|