前言
本文主要讲述通过IDEA将Java代码生成Jar包,并使用一个工具代理以实现通过exe形式运行生成的Jar包,用到的工具链接附在文末,此外我还会讲讲可能会遇到的一些问题,如果你遇到了其它的问题,也欢迎多多交流,话不多说,准备开始~
生成Jar包
以下是本文所使用的示例代码:
import javax.swing.*;
/**
* a demo application
*
* @author zjw
* @createTime 2020/8/6 19:08
*/
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 150);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
JLabel label = new JLabel("Hello, world!", JLabel.CENTER);
frame.add(label);
label.setVisible(true);
}
}
代码准备完毕后,先进行打包相关的配置。首先点击左上角File -> Project Structure -> Artifacts
,然后按照如下图所示的顺序进行点击:
然后在如下对话框中点击选择自己main方法所在类即可,选择完毕,直接点击OK
:
点击OK
后,再勾选下图所示的选项,即完成打包配置,可以发现项目src
路径下,生成了一个META-IF
文件夹:
之后再点击顶部的build
并选择打包项目,如下所示,就会发现项目里多了一个out
文件夹,点击out -> artifacts -> 项目名_jar
即可发现已经生成了jar
包!!!
特别注意(尤其是项目中引入了第三方Jar包)
上文说过,在进行生成jar
包配置后会生成一个META-IF
文件夹,正常情况下都会有一个MANIFEST.MF
文件,但是如果项目中引入了第三方jar
包,在最终生成的jar
包中可能会多出如下类似的文件(可以通过7-Zip
等压缩工具打开jar
包发现[jar
本质就是压缩文件]):除了MANIFEST.MF
文件,另外两个文件都需要被删除。
那如果不删除,又会发生什么呢?我们先通过java -jar demo.jar
进行测试,可以发现会出现以下报错:
这也就是我们为什么需要删除META-IF
文件内文件的原因,可以发现,在删除之后,再通过java -jar
命令即可正确执行!
使用exe代替运行jar
下面我们就来看看如何如何通过exe来执行我们的jar包,在开始之前,首先创建一个文件夹demo
,然后需要下载文末所提供的工具包,打开会发现以下目录包括两个文件:
然后我们要做的就是将这两个文件复制到demo
文件夹中,记得把上文得到的jar
包也放在这里,此外还需要将项目使用的java
版本对应的jre
文件夹复制到这里,最终目录结构如下:
然后我们需要打开launcher.cfg
文件进行以下配置:
.
.\jre\bin\javaw.exe
-jar demo.jar
其中第一行对应demo.jar
相对于launch.exe
的位置,由于两个文件在同一目录下,故直接设置为.
即可,第二行对应jre文件中javaw.exe
的位置,第三行固定为-jar 你的jar包名
即可,保存后,点击launch.exe
可以发现大功告成!!!
设置图标
可能很多人会觉得自带的launch.exe
的图标不够好看,想设置自己的图标,下面就来讲讲如何设置自己的图标:
-
首先打开
tool
文件夹,然后打开icon
文件夹,运行ResHacker.exe
,进入主界面; -
在左上角点击
文件 -> 打开
,选择launch.exe
并点击打开; -
选择左侧的
图标 -> 1 -> 1030
,然后右键单击1030
,选择替换资源...
,在弹出窗口中点击打开新图标文件
,选择自己想设置的图标,然后点击替换
按钮(图标文件可以是exe、dll、res、ico,该软件可以从exe、dll、res文件中抽取出图标); -
选择
文件 -> 另存为
,存到项目目录下,直接点击launch.exe
替换掉即可。由于一些原因,可能在以上操作后,图标没有立刻改变,但是你可以通过复制
launch.exe
文件到其它任意文件夹,会发现图标已经改变,但是复制到原本文件夹,图标仍无法改变,这时你可以试着重启一下电脑,会发现图标就改变了。此外附一个可以生成将一半的图片文件转为ico
格式的网站:convertio。
总结
本文大致介绍了使用IDEA
生成jar
包,并通过一个工具代理实现exe
运行的方法,并介绍了一些可能会遇到的问题,如果有错误之处,欢迎交流指正,如何你在完成的过程中遇到了一些其它问题,也可以在评论区留言。
附件
- 链接:https://pan.baidu.com/s/12fUOz-cBOArCsZgoIVGTJA
- 提取码:k71z