本地maven项SJGame.jar中没有主清单属性目生成独立运行的exe文件
时间: 2025-05-23 17:16:38 浏览: 18
### 解决 Maven 项目打包时缺少主清单属性并生成独立运行的 EXE 文件
#### 修改 `pom.xml` 配置以添加主类清单属性
为了确保 SJGame.jar 中包含主清单属性,需要修改项目的 `pom.xml` 文件,在 `<build>` 节点下加入指定主类的插件配置。对于非 Spring Boot 项目,通常使用的是 `maven-jar-plugin` 插件来设置主类:
```xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<!-- 替换为实际的主类全限定名 -->
<mainClass>com.sjgame.MainApp</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
```
如果这是一个基于 Spring Boot 的应用,则应采用特定于 Spring Boot 的插件来进行同样的操作[^4]。
#### 使用 Launch4J 将 JAR 打包成 EXE 文件
完成上述步骤后,还需要借助第三方工具如 **Launch4J** 来创建 Windows 可执行文件 (EXE),这可以通过命令行或者图形界面实现。以下是通过命令行的方式进行说明:
1. 下载并安装 [Launch4J](http://launch4j.sourceforge.net/);
2. 准备好要转换的目标 `.jar` 文件;
3. 创建一个简单的 XML 配置文件用于描述如何构建 EXE 文件;
下面给出一段典型的 launch4j 配置示例 (`sjgame-launch4j-config.xml`) :
```xml
<?xml version="1.0"?>
<launch4jConfig>
<dontWrapJar>true</dontWrapJar>
<headerType>gui</headerType>
<jar>SJGame.jar</jar>
<outfile>SJGame.exe</outfile>
<errTitle></errTitle>
<cmdLine></cmdLine>
<chdir>.</chdir>
<priority:normal/>
<downloadUrl>http://java.com/download</downloadUrl>
<supportUrl></supportUrl>
<stayAlive>false</stayAlive>
<restartOnCrash>false</restartOnCrash>
<manifest></manifest>
<icon></icon>
<classPath>
<mainClass>com.sjgame.MainApp</mainClass>
</classPath>
<jre>
<path></path>
<minVersion>1.8.0_+</minVersion>
<maxVersion></maxVersion>
<jdkPreference>preferJre</jdkPreference>
</jre>
</launch4jConfig>
```
最后一步是在终端中输入如下指令来编译生成最终的 EXE 文件:
```bash
launch4jc sjgame-launch4j-config.xml
```
这样就可以得到带有主清单属性并且可以直接双击运行的 SJGame.exe 应用了。
阅读全文
相关推荐














