java打包exe 制作安装包 With JRE 自启动 转载 收藏

jnlp 项目部署发布示例 jnlp 项目示例 文章目录jnlp 项目示例简介jnlp项目示例1. 创建一个可执行jar2. 为jar添加签名3. 编写 jnlp 文件4. 发布前三步的文件到服务器5. 测试执行问题浏览器输入Url只下载不执行 & 双击`.jnlp` 文件不执行 简介 JNLP(Java Network Launch Protocol)是一种用来在网络中部署应用程序的一种协议; 在客户端只需要安装 ... 阅读详情
 

java打包exe 制作安装包 With JRE 自启动 转载 收藏 

来自:http://hi.baidu.com/adanren/blog/item/57892af7a0c47b24730eec23.html

(这篇文章真的很不错)

又是一个无聊的周末,硬着头皮给客户想出一套java程序打包的解决方案

目标:有安装程序包像安装qq一样简单一直下一步即可 ,可卸载,要求程序自动启动,不需要单独安装JRE,就在写这套解决方案的时候,我真是百般痛恨微软.哎无奈啊.幸好最终还是被我想出来了,分享下吧,好久不写博了.

第一步 jre减肥,删除jre\lib\rt.jar中不使用的类,删除charsets.jar中不使用的字符集编码.MyWork开源项目(http://mywork.sourceforge.net/)中带了一个瘦身过的JRE6.0,非常小只有几M.如果有需要可在此基础上适当的增肥,例如提示有类找不到,只要在完整的jre下rt.jar包中找到这个类所在的包添加到瘦身过的jre即可.

第二步使用pack200进行压缩,压缩效果非常惊人,具体用法可参考官方手册,下面是最简单的压缩和解压缩命令(如果要制作安装包的话不建议压缩,因为不方便解压缩,还需要另外写程序进行解压)

压缩命令D:\xxxxx\pack200 rt.jar.pack.gz rt.jar

解压缩命令unpack200 -r jre\lib\rt.jar.pack jre\lib\rt.jar

第三步将自己的程序打成jar包,注意指定主类,连同依赖的jar包一同放到jre\lib\ext下面,(当然也可以不怎么干,通过写批处理指定CLASSPATH)直接放到ext下面的好处在下面会体现出来

第四步 在jre文件夹的上层目录下面编写启动批处理%1的作用下面在说

@SET PATH=./jre/bin;%1;%PATH%;

@start javaw com.Main(根据实际情况修改为自己的程序入口)

将本地的jre或jdk文件夹重命名,并在cmd下敲java以确认本机的jre已经失效,点击批处理,测试如果程序正常启动的话,继续往下看,如果程序无法启动,将@start javaw com.Main改写为java com.Main重新启动调试下,看看是不是缺类.

第五步 将批处理编译成exe程序,使用Quick Batch File Compiler工具(http://www.abyssmedia.com/download.shtml),程序使用起来非常简单这里就不在介绍了,E文不好的可以去汉化新世纪下载中文的,注意如果要制作成安装包必须使用幽灵模式,不可以使用控制台模式.

第六步制作安装包使用InnoSetup工具(百度一下到处都有下载),此工具有使用向导,这部分就不介绍了,向导结束后,会提示生成脚本,保存此脚本并生成 exe安装包,运行安装包,如果生成出来的文件程序结构和第四步是一样的,并且可以运行的话,安装包制作完成.(这一步选择程序文件时批处理exe和 jre一同加进来注意jre必须是没有进行pack2000压缩的,否则需要在安装脚本里面另写解压程序)

第七步 随windows自动启动程序,修改安装脚本添加如下代码

[Registry]

Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "程序名"; ValueData: """{app}\主程序.exe"" ""{app}\jre\bin"""

这里面就用到了%1 熟悉批处理的同学都知道系统自启动的时候.代表的并不是程序的所在文件夹,所以这里传递了jre所在文件夹参数,@SET PATH=./jre/bin;%1;%PATH%;中把jre添加到了path中.

第八步注销下重新登录看看程序是否自动启动了.(可以在没有安装jre的机器上测试下)

我的安装包大小为10M左右,我依赖了很多第三方的jar包,否则还可以更小,最后还可以加个壳或使用rar压缩下

==================================================================================

Java5中带了一个压缩工具:Pack200,这个工具能对普通的jar文件进行高效压缩。其实现原理是根据Java类特有的结构,合并常数池,去掉无用信息等来实现对java类的高效压缩。由于是专门对Java类进行压缩的,所以对普通文件的压缩和普通压缩软件没有什么两样,但是对于Jar 文件却能轻易达到10-40%的压缩率。这在Java应用部署中很有用,尤其对于移动Java计算,能够大大减小代码下载量。

Java5中还提供了这一技术的API接口,你可以将其嵌入到你的程序中使用。使用的方法很简单,下面的短短几行代码即可以实现jar的压缩和解压:

压缩

Packer packer=Pack200.newPacker();

OutputStream output=new BufferedOutputStream(new FileOutputStream(outfile));

packer.pack(new JarFile(jarFile), output);

output.close();

解压

Unpacker unpacker=Pack200.newUnpacker();

output=new JarOutputStream(new FileOutputStream(jarFile));

unpacker.unpack(pack200File, output);

output.close();

更为详细介绍,请见下面的网址:

http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment-guide/pack200.html

==================================================================================

目前发布了一个swing 的程序,包括java web start 与applet 两个版本,但是由于第三方包的引入,发布包达到了近5MB,即使在局域网也让人无法忍受那缓慢的加载速度,毕竟对于绝大部分应用来说,网络带宽还是最终的系统瓶颈。

还好JDK5在Java Web Start和Java Plug-in中提供了对gizp和pack200压缩技术的支持,通过压缩将使Java的网络应用在jar的压缩基础上再一次的得到瘦身的飞跃。

gzip

jar包中包含的内容非Java类的资源文件比较多,例如JPEG, GIF等的,用gzip会比较合适

pack200

jar包绝大部分信息是class内容的话,那么pack200绝对是你的首选方案,因为pack200是专门针对class的java类进行优化设计的,主要体现在以下几个方面:

It merges and sorts the constant-pool data in the class files and co-locates them in the archive.

It removes redundant class attributes.

It stores internal data structures.

It use delta and variable length encoding.

It chooses optimum coding types for secondary compression.

压缩签名的整个发布过程

***/JDK5/bin/pack200 --repack demo.jar

--repack的作用等价与pack200和unpack200这两个指令,其作用是对demo.jar里面的class结构用Pack200的格式进行整理,因为签名需要根据jar包的类结构进行散列计算,所以如果不先进行jar的Pack200格式整理的话,等签名后再用pack200进行压缩将会导致签名无效,所以第一步需要进行--repack这个看似无用实则关键的操作

jarsigner -keystore myKeystore demo.jar ...

对Pack200格式整理过的demo.jar进行签名

***/JDK5/bin/pack200 demo.jar.pack.gz demo.jar

对签完名的demo.jar进行Pack200压缩,生成demo.jar.pack.gz

***/JDK5/sample/jnlp/servlet下面的jar包,主要是jnlp-servlet.jar拷贝到要发布的web工程的WEB-INF/lib/目录下

修改web发布工程的web.xml文件,将所有*.jnlp和*.jar的url路径定位到jnlp.sample.servlet.JnlpDownloadServlet进行处理

将demo.jar、demo.jar.pack.gz拷贝到jnlp或者applet指定的路径下

通过以上的操作一切就ok了,也许你想问jnlp和applet需要做什么改动吗,答案是no,一切都由JnlpDownloadServlet 进行透明处理了,jnlp和applet里面的指向还是demo.jar,JnlpDownloadServlet自动会根据request的 Accept-Encoding决定到底是下发demo.jar.pack.gz还是demo.jar,这样如果客户端安装了JDK5的Java Web Start或者Java Plug-in那么JnlpDownloadServlet自动会下发Pack200压缩的demo.jar.pack.gz包,如果客户端是JDK1.4或者更老的环境,那么JnlpDownloadServlet自然会下发demo.jar的普通包。

Pack200的压缩和解压缩速度是比较快的,而且压缩率也是很惊人的,在我是使用的包4.46MB压缩后成了1.44MB(0.322%),而且随着包的越大压缩率会根据明显,据说如果jar包都是class类可以压缩到1/9的大小。其实JavaWebStart还有很多功能,例如可以按不同的jar包进行lazy下载和单独更新,设置可以根据jar中的类变动进行class粒度的下载。心动不如行动,赶快去对你的发布程序进行瘦身吧。

参考:http://sailing8036.spaces.live.com/blog/cns!69D05DFD4294F487!479.entr

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/wk_ri/archive/2009/06/16/4272898.aspx

install.exe 金山系统急救箱,电脑系统急救,是一个很好的软件 立即下载

相关推荐

GEO数据挖掘实战:用R语言从GSE42872数据集中找到关键差异基因(附完整代码)

本文详细介绍了使用R语言从GSE42872数据集中挖掘关键差异基因的完整流程,包括数据下载、探针ID转换、差异表达分析和功能富集分析。通过实战代码演示,帮助生信研究者掌握GEO数据挖掘的核心技术,快速识别疾病相关基因并理解其生物学功能。

weixin_42625070的博客 365

JRE下载安装教程

JRE下载安装教程 JRE全名:Java Runtime Environment (Java 运行环境),java程序现需要在此环境上运行 ## asdas

weixin_46666263的博客 16万+

LangChain与SkillLite集成:AI Agent安全沙箱实践

在AI与自动化技术领域,安全沙箱是实现可信计算的核心机制。其原理是通过资源隔离与权限控制,构建受限的执行环境。技术价值在于平衡功能开放性与系统安全性,尤其适用于处理用户提交的非受信代码或敏感数据。典型应用场景包括AI插件系统、在线代码评测平台等。本文以LangChain框架与SkillLite沙箱的深度集成为例,详解如何通过命名空间隔离、cgroups限制等机制,为AI Agent赋予安全执行动态技能的能力。其中涉及的关键技术点包括Python运行时隔离、动态资源配额管理,以及如何防范Shell注入等常见攻

weixin_34189116的博客 405

JRE安装配置环境变量

7.键盘按win+R,输入cmd,点击确定。

m0_56290707的博客 467

顶刊级科研绘图技巧

顶刊级科研绘图技巧

2401_89571885的博客 1157

全志 T527_Android13 编译 [ 避坑必看 ]

Swap 概念: Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行。当输入编译命令make -j16 的时候,会有如下提示,这是官方建议通过减少编译线程来解决编译时消耗内存过大的问题。Android 13 系统的编译流程,编译一共分为两部分:内核编译与 Android 编译。

公众号:嵌入式分享 2111

基于官方jenkins/jnlp-slave镜像打包docker、kubectl工具

这里我自己手动下载到服务器上传了,也可以自己修改一下dockerfile中配置一下curl -LO https://dl.k8s.io/release/v1.30.0/bin/linux/amd64/kubectl。官方jenkins/jnlp-slave镜像默认不包含docker、kubectl,在jenkins+k8s配置动态节点时如果用到这两个命令会报错,本文章用于介绍怎么打包进去相关命令。#jenkins/jnlp-slave为官方镜像,版本可自行替换。编辑完成后build即可。

q504343409的博客 1098

《QGIS快速入门与应用基础》009:国内镜像源(清华大学/阿里云)下载技巧

针对国内用户下载QGIS速度慢、易中断的问题,推荐使用清华大学和阿里云两大国内镜像源,提供3-10MB/s的极速下载方案。详细解析镜像源核心优势、分步骤下载指南及校验方法,对比清华(同步快、北方优选)与阿里云(南方节点多)的特点。针对常见问题如版本延迟、404错误等提供解决方案,并介绍搭配IDM等工具实现多线程加速的进阶技巧。通过镜像源+下载工具组合,用户可高效获取QGIS安装包,为后续系统安装奠定基础。

LuckyHanMo的博客 1738

java+swing打包jar转成exe并动态绑定jre再打包成安装文件

java打包jar成exe并动态绑定jre再打包成安装檔 注:以下所有步骤的前提是,把jar文件,ico图示(pngImage文件夹),第三方jar包(lib活页夹),jre活页夹,放到同一个活页夹中。 本例放在exe4j Install4j Inno setup活页夹下,如图0 如图0 首先,我们选用exe4j把jar执行文件转成exe文件 exe4j.exe下载地址: http://...

王仁一的博客 1355

Loki 分布式日志中心服务

分布式日志中心 Loki + Promtail + Grafana

原名又逢乱世。不要放下学习的脚步,毕竟比天天打牌、钓鱼、打游戏更能从内在充实自己。 2354

电磁阀颤振工作原理

颤振 颤振,弹性结构在均匀气(或液)流中受到空气(或液体)动力、弹性力和惯性力(见达朗伯原理)的耦合作用而发生的大幅度振动,它是气动弹性力学中最重要的问题之一。 随着机电液一体化技术的发展,电液比例控制技术的应用越来越广泛。电液比例控制系统范围较广,在液压传动与控制过程中,系统能够接受模拟信号或数字信号,使输出的流量或压力连续成比例地变化,都属于此类。该控制系统的优点是充分利用了液压控制与电气控制的长处,即功率传递靠液压,信号处理靠电气的优化措施。 电液比例控制原理与要求 液压控制系统中两个最重要的被控参数

小幽余生不加糖 1万+

java打包exe 制作安装包 With JRE 自启动 转载

来自:http://hi.baidu.com/adanren/blog/item/57892af7a0c47b24730eec23.html(这篇文章真的很不错)又是一个无聊的周末,硬着头皮给客户想出一套java程序打包的解决方案目标:有安装程序包像安装qq一样简单一直下一步即可 ,可卸载,要求程序自动启动,不需要单独安装JRE,就在写这套解决方案的时候,我真是百般痛恨微软.哎无奈

wk_ri的专栏 2260

Mediatek NeuroPilot Yolov8量化

【代码】Mediatek NeuroPilot Yolov8模型转化。

sdrgtywretyeruet的专栏 346

Idea Java及JavaFx导出exe并自带jre任意电脑运行

最详细的教你如何使用idea把程序打包成jar,然后转成exe,让别人的电脑即便没有jre环境也可以完美运行

qq_30548105的博客 4425

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java程序打包成exe:一键安装双击运行——Java脱离jre安装程序制作

对于Java桌面应用来说,比较烦琐的就是安装部署问题,如:客户端是否安装有jre、jre版本、jre在哪里下载、如何用jre启动Java应用等等。不要说刚接触电脑的人,就算是比较熟悉电脑,如果没有接触过Java,面对一个Java应用,如何在Windows下启动它,估计都会折腾半天。所以这个是导致Java桌面应用被一些人所讨厌的最大原因,Java的优势是“一次编写,随处运行”,跨平台特性确实很好,但

Java程序源 2万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

为java程序制作exe

将java程序制作成Windows下的安装需要完成如下步骤: 把程序的class文件打包成Jar文件把jar文件转成exe精简JRE将整个程序(包含jre)打包成安装包 使用exe4j将jar文件转成exe exe4j是一个帮助你集成Java应用程序到Windows操作环境的java可执行文件生成工具,无论这些应用是用于服务器,还是图形用户界面 (GUI)或命令行的应用程序。如果...

aa545785的博客 125

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

将用eclipse写成的JAVA程序转换为exe(下一篇将介绍利用Inno setup把打包生成的jre合并到exe文件中)

转载自:http://blog.youkuaiyun.com/u014470581/article/details/52033617?locationNum=7(好像博主也是转载的,但并没有注明转自哪里,也就没找到原作者....) 1.使用简介: 把java应用程序打成exe文件我们可以借助第三方软件exe4j来完成。Exe4j大家可以在网上下载,下载地址是: http://www.ej-t...

FDGFGFDGFD的博客 715

【保姆项】将任意Java程序打包成exe可运行文件

将任意Java程序打包成exe可运行文件,JavaFx

XuanRan的博客 1万+

Java GUI使用exe4j打包exe文件

exe4j下载地址:http://blog.youkuaiyun.com/cciii/article/details/17083531 1. 在MyEclipse将java项目打包成可执行jar文件。项目结构如下,RunSM.java是程序入口类,里面有main函数,client.xml是配置文件,lib是用到的第三方类库(注:src下面的文件将全部打包成jar文件,和src并列的其它文件必须拷到放sr...

weixin_30915275的博客 132

java程序发布成exe,java程序打包发布成exe(转载)

本说明只是基于用java的GUI程序.用myeclipse将项目myswt做成jar包myswt.jar(见注释1)或用netbeans将项目myswt做成jar包myswt.jar(见注释2)在你安装jre的机子上你可以直接双击运行myswt.jar但是在客户机上没有安装jre时,是不能运行myswt.jar包的此说明将教你如何将myswt.jar文件转化成myswt.exe文件,并且在客户端没...

weixin_31321157的博客 371

21 Java jar打包成exe应用程序(转载)

Javajar打包成exe应用程序,可在无JDK/JRE环境下运行 前言 近期做了一个前后端合并的spring boot项目,但是要求达成exe文件,提供给不懂电脑的小白安装使用,就去研究了半天,踩了很多坑,写这篇文章,是想看到这篇文章的人,按照我的步骤走,能少踩坑。 准备 准备工作: 一个jar包,没有bug能正常启动的jar包 exe4j,一个将jar转换成exe的工具,链接:https://pan.baidu.com/s/1J30uUMJcYnqWCJSr6gkM5w 提取码:6esr .

qq_44885775的博客 480

exe4j打包mysql成exe_Exe4j+Install4j轻松实现将Java程序打包成exe文件

如何把一个Java程序打包成exe文件,运行在没有Java虚拟机的机器上?首先,将编译好的程序打包成jar文件,然后做出exe,这样代码就不可见了,但是exe文件在没有安装jre的电脑上不能运行,如果要求客户再去安装jre并设置环境变量就不太人性化了,所以我们需要将jre打包。这几步操作网上介绍的插件和方法很多,但很多不好用。经过筛选,最终选择了Exe4j,并使用Install4j来增加安装引导。...

weixin_28981373的博客 469

exe4j打包jar成exe文件(将jdk打包在内)

          之前用exe4j打包有过示例,按照之前的博客文档http://blog.youkuaiyun.com/tming_1985/archive/2009/12/24/5070540.aspx 一定能打包成功。我用的exe4j版本是4.1 在这http://download.youkuaiyun.com/source/2378276可以下载但发现用户总会把装到他机器上的java环境删掉,客户端总

tming_1985的专栏 7149

Java项目打包exe

把jar文件打包成可执行的.exe文件,在没有jdk的环境的电脑运行 1.准备2个文件,1个是你要打包的jar文件,另1个是jdk文件下面的jre 如果嫌jre文件太大,你们可以去网上找下精简版的jre 2.安装exe4j打包工具,执行打包操作 下载链接:https://pan.baidu.com/s/15ZTOlvfUai_XNBJiWoDfUQ密码:a9pu 下载完类解压,然后运...

AYXYJ 304

将用eclipse写成的JAVA程序转换为exe(实用!)

做了JAVA课程设计,就想把自己做的游戏发给小伙伴玩一玩,就算打包成jar,可小伙伴没有安装JDK,怎么办呢,于是上网搜了关于这个问题的解决办法并成功的将自己的小程序转换了 出来,当然其中也遇到不少问题,会用红色标注我遇到的问题。 转载自:http://blog.youkuaiyun.com/u014470581/article/details/52033617?...

3545

Java 打包成exe安装包

1、在eclipse中导出Runnable JAR file 2、选择主函数所在的类和输出位置后finish: 3、这里选择的打包工具是exe4j,在网上找序列号注册一下,否则在打完后在exe运行时,会有提示信息: 接下来一路next即可,完成后讲打包好的exe连同jre放在同一目录底下,就可以在未安装jre的系统中运行该程序; 4、用Compi...

weixin_33775582的博客 83
上一篇: Linux服务器配置与管理
下一篇: eclipse 报错the hierarchy of the type is inconsis
clbxp
博客等级 码龄21年 35粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值