使用 Jsmooth 将 Java 程序打包为exe

简介: 使用 Jsmooth 将 Java 程序打包为exe

简介:


之前就在想将Jar文件打包成EXE文件可以随处运行,不过尝试很多工具都没有实现,经过不停的搜集与实践终于实现了不安装Java环境的电脑同样可以让Java程序跑起来!我们想生成的EXE文件可以在任何机器上运行,有一个开源软件可以达到我们的目的,就是Jsmooth。Jsmooth的原理很简单,既然是因为没有JRE而无法运行我们的程序,那我们就自己带一个JRE。不过JRE有近百兆,其实可以根据自己的程序需要精简JRE,不过这个问题比“Jar文件打包成EXE文件”更复杂!

IDEA配置

Jsmooth的使用方法

操作步骤:

1、首先准备我们的资源,把要转换的Jar文件、精简过的JRE文件夹和想生成的EXE文件的图标(可以是png,jpg等格式,不想加图标可以不弄)放到同一个文件夹内。这一步一定要做,否则可以成功生成,但在没有java环境的机子上还是不能运行,因为他会找不到JRE文件夹的位置

2、双击jsmoothgen.exe,出现主界面。

3、点击骨架,我从骨架中选择Windows Wrapper(根据自己程序需要选择),即有图像界面的窗口程序,下面的消息为找不到JRE环境时显示的消息,URL为JRE的下载地址。

4、点击可执行文件,填写生成EXE文件的文件名(路径)和图标

5、点击应用程序,出现如下窗口:

可以选择“嵌入式Jar”,即将Jar文件嵌入到EXE文件里面,也可以在Classpath中加入Jar文件,不过这样生成的EXE文件里没有Jar文件,运行时需要从外部加载。我们勾选“嵌入式Jar”,填写要转换的Jar文件路径。

6、关键的一步:JVM选择.

点选捆绑在你应用中的JVM,点击浏览按钮,选择JRE目录

现在可以点击工具栏上小齿轮编译了。

8、这个程序在有java环境的机子上可以独立运行在没有java环境的机子上只要该目录下有JRE文件夹(JRE环境)就可以运行,在没有java环境的虚拟机上可以成功运行。

Jsmooth的下载地址:

百度云盘

相关文章
|
24天前
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
2月前
|
SQL 安全 Java
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
59 2
|
2月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
113 1
|
2月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
125 4
|
2月前
|
Java Maven Android开发
【Azure Developer】VS Code打包Java maven Project 遇见 BUILD FAILURE
Unknown lifecycle phase "lean". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
|
3月前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
608 2
|
3月前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
194 1
|
缓存 Java 开发工具
Java 技术篇-利用exe4j工具生成exe文件实例演示,IntelliJ IDEA将项目转化为jar包方法,运行生成后的程序弹出exe4j提示处理,生成的程序显示控制台设置方法
Java 技术篇-利用exe4j工具生成exe文件实例演示,IntelliJ IDEA将项目转化为jar包方法,运行生成后的程序弹出exe4j提示处理,生成的程序显示控制台设置方法
465 0
Java 技术篇-利用exe4j工具生成exe文件实例演示,IntelliJ IDEA将项目转化为jar包方法,运行生成后的程序弹出exe4j提示处理,生成的程序显示控制台设置方法
|
17天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
80 17
|
28天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者