一个Java的maven项目生成.exe文件的详细过程

一个Java的maven项目生成.exe文件的详细过程

​ 前言:本文是对一个java的maven项目开发桌面程序,从源码——打包jar——生成可执行文件(即后缀为.exe文件)的全过程进行了详细介绍,网上介绍的大多是其中某一个部分,小白学习起来很费劲的。你读了这篇文章后,只要按步骤操作配置,就可以将maven项目的桌面程序编译为可执行文件,拿出去给白白装叉了:)

一、工具准备

  • JDK22,安装JDK配置好开发环境。当然,版本自选。

    [!NOTE]

    但环境遍历一定要配置好,java的命令运行有效。

  • Eclipe开发工具(接触Java开发都懂的工具),主流javaIDE之一。

  • exe4j可以将 java 项目(jar)打包成exe可执行文件,官网下载:ej-technologies - Download exe4j,32位或64位版本要选对哦。

二、准备一个maven项目

​ 我这里准备的是一个很简单的maven项目做出来的桌面程序,如果你不懂什么是maven项目,那就查查资料吧,毕竟我这里介绍的东西起码你不能比我还白:)。

​ 程序非常简单,从目标文件demo.xml中读取一句话,并在窗口中输出。具体过程如下:

1.第一次配置pom.xml文件

​ 这个项目要用到SAXreader对象,导入dom4j包。给个参数配置网址:Maven Repository: dom4j » dom4j » 1.6.1 (mvnrepository.com)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.leo</groupId>
  <artifactId>DemoMaven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
 <!--配置(1)-->
  <dependencies>
	  <dependency>
          <groupId>dom4j</groupId>
	  	  <artifactId>dom4j</artifactId>
	      <version>1.6.1</version>
      </dependency>
  </dependencies>
 <!--这里准备放置生成maven依赖jar包的配置(2)--> 
</project>

2.准备目标文件demo.xml

​ 目标文件可以自定义放置位置,我这里直接放到项目根目录了。

<?xml version="1.0" encoding="UTF-8"?>

<list>
  <info>这是一个maven程序生成可执行文件的演示!</info>
</list>

3.Java代码如下:

package myDemo;

import java.awt.Container;
import java.io.FileInputStream;
import java.io.InputStreamReader;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Exe4jDemo extends JFrame {
	private static final long serialVersionUID = 1L;
	private JLabel infoLab;
	public Exe4jDemo() {
		init();
	}
	//初始化窗口
	public void init() {
		setTitle("Demo");
		setSize(300,200);
		setLayout(null);
		setLocationRelativeTo(null);
		Container content=getContentPane();
		infoLab=new JLabel();
		infoLab.setBounds(10,60,260,25);
		content.add(infoLab);
		ImageIcon icon=new ImageIcon(Exe4jDemo.class.getClassLoader().getResource("bg.png"));
		JLabel bgImg=new JLabel(icon);
		bgImg.setBounds(0,0,300,200);
		content.add(bgImg);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	//窗口中显示一条信息
	public void showInfo() throws Exception {
		FileInputStream fis=new FileInputStream("demo.xml");
		InputStreamReader isr=new InputStreamReader(fis,"utf-8");
		SAXReader reader=new SAXReader();
		Document doc=reader.read(isr);
		Element ele=doc.getRootElement();
		infoLab.setText(ele.elementTextTrim("info"));
	}
	public static void main(String[] args) throws Exception {				
		Exe4jDemo demo=new Exe4jDemo();
		demo.showInfo();
	}
}

三、生成带有maven依赖的jar包

​ 这里我查了好多资料,好多文章说的都不完整,可能大咖角度的确没考虑小白的感受:(

1.第二次配置pom.xml文件

​ 下面的配置是放到标签内的。maven-assembly-plugin 插件是一个强大的工具,用于将 Maven 项目打包成可执行的程序或分发包。它可以将项目中的代码、资源和所有依赖包的内容打成一个程序集,支持多种格式如 zip、tar.gz、jar 和 war 等。

  <!--配置(2)-->
  <build>
	  <plugins>
		  <plugin>
			  <!-- mavenAssembly插件,这里groupId和version标签省略了,默认最新版本-->
			  <artifactId> maven-assembly-plugin </artifactId>
			   <!-- configuration是对你要打的jar包进行相关配置 -->
			  <configuration>
			       <descriptorRefs>
					   <!-- 所有的依赖全部打入jar包-->
			            <descriptorRef>jar-with-dependencies</descriptorRef>
			       </descriptorRefs>
			       <archive>
			            <manifest>
							<!-- 程序运行时,主入口类,即你的main函数所在的类-->
			                 <mainClass>myDemo.Exe4jDemo</mainClass>
			            </manifest>
			       </archive>
			   </configuration>
			    <!--executions定义了插件的执行阶段和目标-->
			   <executions>
				   <!-- 单个执行配置-->
			       <execution>
			            <id>make-assembly</id>
			            <!-- 插件执行的声明周期,打包阶段-->
			            <phase>package</phase>
			            <!-- 插件的执行目标,单个分发-->
			            <goals>
			                 <goal>single</goal>
			            </goals>
			       </execution>
			   </executions>
          </plugin>
	  </plugins>
  </build>

2.生成jar包

​ (1)在DemoMaven项目上——>点右键——>选”Run As"——>点击"Maven install",运行生成jar包。
在这里插入图片描述

​ (2)看控制台运行结果:BUILD SUCCESS打包成功,并在target文件夹下出现一堆文件夹和文件,其中带有"jar-with-dependencies"名字的DemoMaven-0.0.1-SNAPSHOT-jar-with-dependencies.jar,就是我们需要的jar包。
在这里插入图片描述
​ (3)测试jar包能否运行

​ 为了测试,在D盘新建文件夹jardemo方便测试。到项目的target文件夹下,将"DemoMaven-0.0.1-SNAPSHOT-jar-with-dependencies.jar"拷贝到jardemo文件夹,修改名字"DemoMaven.jar";程序用到的demo.xml文件也要拷贝过来,与jar包放到同一个文件夹下。

[!CAUTION]

在项目/DemoMaven/src/main/resources包下的资源可以一同打包,除此之外的资源需要手动拷贝;如果资源是在文件夹下,还需要同时拷贝文件夹。

​ 打开“命令提示符”窗口调试,运行正常,至此,打包完成。

在这里插入图片描述

四、生成exe文件

​ 要生成exe文件需要用到工具exe4j,这个工具关键在配置,配置好了就可以顺利生成,没啥技术含量,但“会者不难、难者不会”。配置步骤如下:

1.安装完exe4j应用程序,首次打开exe4j,进入“Welcome”页面

给个密钥:A-XVK258563F-1p4lv7mg7sav,这个可以用。

在这里插入图片描述

​ 点“确定”,注册通过。

在这里插入图片描述

2.下一步,进入“Project type”页面。

在这里插入图片描述

3.下一步,进入“Application info”页面。

在这里插入图片描述

4.下一步,进入“Executable info”页面。

在这里插入图片描述

5.下一步,进入“Java invocation”页面。

​ 点中“+”号,选择要生成exe文件的jar包,即第三步骤打包的DemoMaven.jar文件。

在这里插入图片描述

​ “确定”后,点下面的“…”,弹出程序入口类选择界面,选中你的入口函数所在的类。

在这里插入图片描述

​ “确定”后,配置页面情况。

在这里插入图片描述

6.下一步,进入“JRE”页面,配置成在其他没有Java环境的计算机上照常运行的程序。

在这里插入图片描述

​ 点击“高级选项”的“Search sequence”,创建jre文件路径。

在这里插入图片描述

​ "确定"后,会生成一个Directory./jre的路径图标,移到最上面即可。

在这里插入图片描述

[!CAUTION]

实际上,如果你生成程序你自己电脑用,不需要给别人使用,是可以略过这里的“高级选项”配置的。

7.连续点击“下一步”,进入“Finished”页面。

在这里插入图片描述

​ 可以看到上面,测试已成功!实际上,在进入“Compile executable”页面时,已编译生成exe文件,可以查看exe文件设置的输出路径,在jardemo文件夹下:

在这里插入图片描述

8.完成JRE文件拷贝,实现任何地方都可以运行exe文件。

​ 上一步完成后,只能在你自己的电脑上运行,因为你的机子上有JRE环境(JDK中是包含JRE的),即便jardemo文件夹下还没有前面指定的jre文件夹及文件,exe程序也会通过环境变量找到你的JRE(也就是你的JDK)。所以,换了别人电脑,不一定会装JRE,运行这个程序就可能会报错。要使该程序实现任何地方都可以运行,在第6步“高级选项”配置基础上,还需要将JDK中的jre文件夹复制到jardemo目录下,具体过程如下:

  • 找到你的JDK安装目录。如果你忘记了JDK安装目录,可以在控制台,使用“where java"命令查看。

    在这里插入图片描述

  • 到D:\Program Files\Java\jdk-22文件夹下查找jre文件夹。因为我的JDK版本比较高,没有发现jre文件夹,这需要在控制台生成一个。在控制台进入jdk-22目录,命令:bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre。

    在这里插入图片描述

    发现jdk-22文件夹下出现了jre文件夹,这就是java程序运行时,所需要的jre环境文件。

    在这里插入图片描述

  • 将jre文件夹整体拷贝至jardemo文件夹下,删除不需要的jar包。最后将jardemo下所有的文件一起压缩传给需要的人使用即可!

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值