当前位置:首页 > Java

java程序如何打包成exe

2026-03-02 23:29:53Java

使用 Launch4j 打包

Launch4j 是一个跨平台工具,可将 Java 应用程序打包为 Windows 可执行文件(.exe)。它提供了图形界面和命令行支持,适合不熟悉脚本的用户。

下载并安装 Launch4j,打开后配置以下关键项:

  • Output file:指定生成的 .exe 文件路径。
  • Jar:选择需要打包的 Java 应用程序 JAR 文件。
  • Min JRE version:设置最低要求的 JRE 版本。
  • Icon(可选):为 .exe 文件添加自定义图标。

完成配置后点击“Build wrapper”生成 .exe 文件。Launch4j 会创建一个轻量级启动器,自动检测并调用系统 JRE 运行程序。

使用 JPackage 工具

JPackage 是 JDK 14 引入的官方打包工具,支持生成原生安装包(包括 .exe)。确保已安装 JDK 14 或更高版本,并配置环境变量。

通过命令行运行以下指令:

java程序如何打包成exe

jpackage --input target/ --main-jar your-app.jar --main-class com.example.Main --type exe --name MyApp --dest output/
  • --input 指定包含 JAR 文件的目录。
  • --main-jar--main-class 定义主 JAR 和入口类。
  • --type 设置为 exe 生成 Windows 可执行文件。
  • --dest 指定输出目录。

JPackage 会生成包含 JRE 的独立安装包,适合分发无需预装 Java 的环境。

使用 Inno Setup 创建安装程序

Inno Setup 是一款免费的 Windows 安装程序制作工具,可将 Java 程序及其依赖打包为专业安装包。

编写一个脚本文件(如 setup.iss),配置安装包信息:

java程序如何打包成exe

[Setup]
AppName=MyJavaApp
AppVersion=1.0
DefaultDirName={pf}\MyJavaApp
OutputDir=output
OutputBaseFilename=Setup
Compression=lzma

[Files]
Source: "target\*.jar"; DestDir: "{app}"
Source: "jre\*"; DestDir: "{app}\jre"; Flags: recursesubdirs

[Icons]
Name: "{group}\MyApp"; Filename: "{app}\jre\bin\java.exe"; Parameters: "-jar MyApp.jar"

运行 Inno Setup 编译器生成安装程序。此方法适合需要包含自定义 JRE 或复杂文件结构的场景。

使用 GraalVM 原生镜像

GraalVM 支持将 Java 程序编译为原生可执行文件,彻底消除 JVM 依赖。安装 GraalVM 并配置环境变量后,使用以下命令:

native-image -jar your-app.jar --no-fallback -H:Name=output.exe
  • --no-fallback 确保完全原生编译(否则可能回退到 JVM 模式)。
  • -H:Name 指定输出文件名。

生成的 .exe 文件可直接运行,启动速度快,但需注意部分 Java 特性(如反射)可能需要额外配置。

注意事项

  • JRE 依赖:除 GraalVM 原生镜像外,其他方法需确保目标系统安装匹配的 JRE,或打包时包含 JRE。
  • 资源文件:若程序依赖外部资源(如图片、配置文件),需在打包时正确设置路径。
  • 版本兼容:JPackage 和 GraalVM 需要较新 JDK 版本,旧项目可能需升级构建环境。
  • 签名:为 .exe 文件添加代码签名可避免安全警告,需购买数字证书。

标签: 程序java
分享给朋友:

相关文章

java如何读取文件

java如何读取文件

读取文件的常用方法 Java提供了多种读取文件的方式,适用于不同场景和需求。以下是几种常见的方法: 使用FileInputStream和BufferedInputStream读取二进制文件…

如何运行java文件

如何运行java文件

运行Java文件的方法 确保已安装Java Development Kit (JDK),可通过命令行输入java -version和javac -version验证安装。 编写Java代码并保存为.…

java如何避免死锁

java如何避免死锁

避免死锁的方法 固定顺序获取锁 确保所有线程按照相同的顺序获取多个锁。例如,若需要获取锁A和锁B,所有线程必须先获取A再获取B,避免交叉依赖导致的死锁。这种方式破坏了“循环等待”条件。 使用锁超时机…

php 实现 java md5加密

php 实现 java md5加密

PHP 实现 Java MD5 加密 Java 和 PHP 的 MD5 加密结果可能存在差异,主要由于字符编码和输出格式的不同。以下是确保 PHP 与 Java MD5 加密结果一致的方法。 确保字…

如何学好java编程

如何学好java编程

理解基础概念 掌握Java的基础语法是学习的起点。变量、数据类型、运算符、控制结构(如循环和条件语句)是核心内容。面向对象编程(OOP)的概念(类、对象、继承、多态、封装)是Java的核心,需深入理解…

react如何与java配合

react如何与java配合

React 与 Java 配合的常见方式 React 作为前端框架,通常与 Java 后端通过 RESTful API 或 GraphQL 进行交互。以下是几种常见的配合方式: RESTful AP…