一键搞定Java桌面应用安装部署—exe4j+Inno Setup+JRE

2024-01-18 18:08

本文主要是介绍一键搞定Java桌面应用安装部署—exe4j+Inno Setup+JRE,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如果您喜欢这些文章,欢迎点击此处订阅本Blog

Blog 订阅

<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>


转自【http://www.blogjava.net/huliqing/archive/2008/04/18/193907.html】

 

    对于作Java桌面应用来说,比较烦人的就是安装部署问题,客户端是否安装有jre、jre版本问题、jre去哪下载、如何用jre启动你的Java应 用?不要说刚接触电脑的人,就算是比较熟悉电脑,如果没有接触过Java,面对一个Java应用,如何在Windows下启动它,估计都会折腾半天。如果 不是因为这个问题,Java在我的眼里算是最完美的语言了,也是我最喜爱的语言。
    所以我认为这个是导致Java桌面应用被一些人所讨厌的最大原因,Java的优势是“一次编写,随处运行”,跨平台特性确实很好,但并不是每个人都需要或都想要跨平台,而且有时候JVM平台或版本问题也会造成“一次编写,到处测试”的尴尬。
    最好的方式莫过于带着JRE,让用户轻松点击就能运行。下面我们来解决这样的问题,有什么好的建议或方法请其他朋友多多指教或补充!
    针对windows平台,让用户一键式安装,双击使用, 使用工具exe4j + Inno Setup, 这两个工具都可以在网上找到,不熟悉的可以多搜搜,使用起来也不难。
    带着JRE运行,JRE的大小应该是最让人头疼的,我默认安装的jre6大小达到80M,而程序只有200-300k左右,感觉非常不合理,分发与网络传 输过程也会大受影响!为了解决这个问题我一直在网络上搜索“瘦身版”的JRE,无意中搜到了Beansoft老师介绍的一篇关于迷你JRE的文章,相关的 JRE下载后解压约14M左右,试用了一下,相对于我的应用缺少了一些类文件,关于部分xml操作类,及swing桌面应用框架相关连的部分类也找不到, 最后借鉴了一下,自己把一个完整的JRE从80M瘦到了38M,去除了很多不需要的类文件,当然,如果耐心一点还可以再瘦下去,再抽掉一些类文件。
    在这个基础上再配合Inno Setup这个安装包制作工具,最后把整个程序从40M压到了8M,下面看看关于整个操作过程,关于JRE的瘦身有些烦琐就不写了,而且SUN的JRE瘦身计划也在进行,相信很快会有更小的瘦身版JRE推出,自己没有必要再去费神。
   
    下面是我的一个完整的Java程序 —— MyLoading


可以看到已经附带了jre1.6 , 下面先使用exe4j给它制作一个exe执行文件(即上图的MyLoading.exe),并指定我们自带的jre1.6 。以下是exe4j的启动界面,点击下一步开始创建配置文件。

   


接着选择类型,我们选择第一个,这样可以保证程序仍具有跨平台的特性。如果选择第二个,可以把程序完全编译成exe文件,可以更好的保护你的程序不被反编译。


接下来设置你的程序的短文件名,源文件夹路径(如我的:E:/MyLoading),以及要生成的exe文件的存放目录,exe存放目录必须指定到源文件夹下,这里我把它指定为E:/Myloading的根目录下。


接下来,可以给我们即将生成的exe文件起一个名字,如我的“MyLoading”,还可以给它指定一个ico类型的图标,其它按默认就可以了,如图:


接下来的这一步,我们需要把程序中所用到的类路径添加上去。然后指定程序的启动类,其它如果没有必要的话,则按默认即可,点击+号添加类路径:


基本上你所需要用到的Jar文件都要添加上去,可以逐个添加上去,也可以添加整个文件夹或者使用系统环境变量,为了使你的程序能够随处运行,所以还是强列 建议你使用相对路径,并且不要使用环境变量。添加好你的类路径之后回到上一步去选择好你的"Main Class"即可。


接下来先选择我们的程序所需要的jre版本, 然后便是选择我们自带的jre了,这一步不是必须,但是为了更好的分发程序,我们自带了jre, 所以必须把我们自带的jre指定为首选的运行环境,如图选择:
Search sequence


默认情况下程序会去系统的注册表,环境变量及相关的目录查找jre,因为我们只需要自带的jre,所以这里我把默认的选项移除了,然后添加我们自己的jre所在的目录路径,点+号开始:


这里还是建议使用相对的目录路径:


指定jre所在的目录,如图:


最后我的jre目录路径就是这样的:./jre1.6


下面这一步只是简单的给程序添加一个启动画面,然后按默认下一步下一步就可以了。



程序最终生成了这个执行文件: MyLoading.exe
现在使用它,已经可以正常利用我们自带的jre启动程序了,但是整个程序仍有40M的大小.
现在我们使用Inno Setup进行压缩并制作一个安装包。


Inno Setup的下载安装请到网上搜索,安装后启动脚本向导,如图所示:


整个过程很简单:



这里指定你的程序的启动文件,即刚才用exe4j创建的exe文件,并将你的整个程序目录都包含进去就可以了,接下来的基本上一直按下一步就可以了,直到脚本向导完成,





然后执行该脚本即可:





然后找到Inno Setup的默认输出目录,就可以看到编译输出后的安装包了,如下图:MyLoading安装.exe
大小已经压到了8.86M。


利用这个就可以快速轻松的安装你的Java桌面应用了。


huliqing
Email:huliqing@live.com
QQ: 31703299
学习永无止境,欢迎一起交流研究...

huliqing
huliqing@live.com


<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>


<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>


<script src="http://www.google.com/reader/ui/publisher.js" type="text/javascript"></script> <script src="http://www.google.com/reader/public/javascript/user/00697638153916680411/state/com.google/broadcast?n=5&callback=GRC_p(%7Bc%3A%22green%22%2Ct%3A%22%5Cu8FD9%5Cu4E9B%5Cu6587%5Cu7AE0%5Cu4E5F%5Cu503C%5Cu5F97%5Cu4E00%5Cu770B%22%2Cs%3A%22false%22%7D)%3Bnew%20GRC" type="text/javascript"></script>

这篇关于一键搞定Java桌面应用安装部署—exe4j+Inno Setup+JRE的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/619809

相关文章

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决Spring运行时报错:Consider defining a bean of type ‘xxx.xxx.xxx.Xxx‘ in your configuration

《解决Spring运行时报错:Considerdefiningabeanoftype‘xxx.xxx.xxx.Xxx‘inyourconfiguration》该文章主要讲述了在使用S... 目录问题分析解决方案总结问题Description:Parameter 0 of constructor in x

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

Java中List转Map的几种具体实现方式和特点

《Java中List转Map的几种具体实现方式和特点》:本文主要介绍几种常用的List转Map的方式,包括使用for循环遍历、Java8StreamAPI、ApacheCommonsCollect... 目录前言1、使用for循环遍历:2、Java8 Stream API:3、Apache Commons

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在