将java程序打包成可执行文件的实现方式

 更新时间:2025年02月24日 15:45:22   作者:jforgame  
本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带工具(jpackage),每种方法都有其优缺点,可根据实际需求选择合适的方式

1.问题提出

当你写了一个很炫酷的java小游戏,你迫不及待想给朋友分享。然而,你发给朋友之后,他却表示无法执行。因为我们无法保证其他人的电脑上已经安装了java运行环境。

所以,我们有哪些方法把我们的炫酷代码分享给朋友呢?

2.如何将java程序打包成可执行文件

这里介绍两种方式。

2.1将编译后的代码及jre运行环境一起打包

1. 将程序编译后,拷贝一份jre环境,放在同一个文件目录下,如下图所示

2. 新建一个文件,命名为start.bat。输入以下内容

set Path="jre1.8.0_261\bin" 
java Main
pause

解释下这几句批处理代码

  • 第一句:设置局部环境变量(常规jdk环境变量是全局配置)。由于此处环境变量的作用只在此处运行代码有效,所以只引入jre配置则可。
  • 第二句:运行java类文件或者jar文件(按实际情况修改成别的启动命令)
  • 第三句:暂停该批处理程序(没有这一句程序会一闪而过)

2.2使用第三方打包工具

可以使用第三方打包工具,直接打包成系统可执行文件,例如windows的exe程序。

下面以launch4j作为演示,下载地址:launch4j官网

  • 打开Launch4j,点击"New configuration file"新建一个配置文件;
  • 设置输入选项,指定主类名称和JRE路径;
  • 添加输出选项,指定生成的EXE文件名称和位置;
  • 完成配置后,点击"Build wrapper"构建wrapper;
  • 最后点击"Save config as..."保存配置文件。

根据自己的需求修改配置文件中的参数,然后点击"Build"按钮就可以生成可执行的EXE文件了。

launch4j的功能很完善,可以定制程序图标,设置运行jvm参数等等,也支持把jre一起打进程序或者从指定网站下载。

2.3使用jdk自带的jpackage工具

jpackage 是从 Java 14 开始提供的一个工具,它允许开发者为 Java 应用程序生成特定系统平台的可执行程序,而不需要在目标系统上预先安装 Java 运行时环境(JRE)。

jpackage 通过将 JRE 和应用程序的 JAR 文件以及所有必要依赖项打包在一起,生成特定平台的可执行程序,例如 Windows 上的 .exe 文件或 macOS 上的 .dmg 文件。

使用 jpackage 的好处包括:

  1. 无需安装 Java:用户无需在本地安装 Java 即可运行应用程序。
  2. 易于分发:生成的可执行文件或安装程序可以轻松地在目标平台上分发和安装。
  3. 自定义jpackage 支持自定义应用名称、图标等,提供了丰富的自定义选项。
  4. 跨平台:虽然每种格式必须在相应的平台上构建,但 jpackage 本身支持跨平台生成不同的包格式。

基本的 jpackage 使用示例如下:

jpackage --input . --name YouAppName --main-jar yourapp.jar

对于 Windows 平台,jpackage 需要 WiX 工具来生成安装程序,并且可能需要额外的参数来指定控制台模式、快捷方式等2。

此外,jpackage 可以与 jlink 工具结合使用,创建自定义的 Java 运行时映像,进一步减小应用程序的大小并优化性能3。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot实战之实现结果的优雅响应案例详解

    SpringBoot实战之实现结果的优雅响应案例详解

    这篇文章主要介绍了SpringBoot实战之实现结果的优雅响应案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • 后端返回各种图片形式在前端的转换及展示方法对比

    后端返回各种图片形式在前端的转换及展示方法对比

    这篇文章主要给大家介绍了关于后端返回各种图片形式在前端的转换及展示方法对比的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-06-06
  • 关于SpringBoot中的XA事务详解

    关于SpringBoot中的XA事务详解

    这篇文章主要介绍了关于SpringBoot中的XA事务详解,事务管理可以确保数据的一致性和完整性,同时也可以避免数据丢失和冲突等问题。在分布式环境中,XA 事务是一种常用的事务管理方式,需要的朋友可以参考下
    2023-07-07
  • java实现简单猜数字游戏

    java实现简单猜数字游戏

    这篇文章主要介绍了java实现简单猜数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 强烈推荐 5 款好用的REST API工具(收藏)

    强烈推荐 5 款好用的REST API工具(收藏)

    市面上可用的 REST API 工具选项有很多,我们来看看其中一些开发人员最喜欢的工具。本文通过图文实例代码相结合给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2020-12-12
  • java截取图片示例

    java截取图片示例

    这篇文章主要介绍了java截取图片示例,把代码中的图片路径改成自己的图片,运行就可以看到效果了,需要的朋友可以参考下
    2014-03-03
  • 带你重新认识Java动态代理

    带你重新认识Java动态代理

    这篇文章主要为大家介绍了Java的动态代理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • Java实现文件上传与文件下载的示例代码

    Java实现文件上传与文件下载的示例代码

    在开发中项目难免会遇到文件上传和下载的情况,这篇文章主要为大家详细介绍了Java中实现文件上传与文件下载的示例代码,希望对大家有所帮助
    2023-07-07
  • Spring mvc服务端数据校验实现流程详解

    Spring mvc服务端数据校验实现流程详解

    这篇文章主要介绍了Spring mvc服务端数据校验实现流程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java自定义比较器实现中文排序

    Java自定义比较器实现中文排序

    这篇文章主要介绍了Java自定义比较器实现中文排序,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08

最新评论