几种jar转exe方法的比较
几种jar转exe方法的比较
【前言】
今天一天就做这个了,无语了,焦头烂额啊,
其实java的优势真不在应用程序上,
想编软件的学学C什么的。
【说明】
几种方法都试过,
但是好些都不成功,
可能是我的操作有问题吧。
【jsmooth】
接触的第一款jarToexe软件,
参考的这篇文章:
http://hi.baidu.com/chenzhiyanczy/blog/item/070a0f04f9da6308738b6514.html
感受:
可以生成独立的exe文件,
但是无法在没有jre的机器上运行,
文中所说的捆绑jvm也没有实现。
原理:
琢磨着像,把jar打进exe,同时告诉电脑jvm在哪。
【exe4j 】
参考文章:
http://www.blogjava.net/huliqing/archive/2008/04/18/193907.html
感受:
最后生成的是一个文件夹,其中有jre,jar,exe
exe文件不能离开这个文件夹否则无法使用。
原理:
应该是告诉电脑jar在哪,jvm在哪。
【Inno Setup】
参考文章:
同上。
感受:
就是把exe4j生成的文件夹做了一个安装包,
然后通过这个安装包安装,
感觉挺好玩,但是不现实,
一个安装包中有jre,所以很大。
【GreenJVMMake】
参考文章:
http://blog.csdn.net/cping1982/article/details/2892844
感受:
通过上面可以知道jar转成exe的大小和jre直接相关,
所以想到了精简jre大小,
自己琢磨了半天发现基本上有用的九个rt.jar,
所以准备精简rt.jar,使用这个软件可以做到,
做到之后结合exe4j会报错,
该文给出的方案和exe4j + Inno Setup相似,
但是到了这一步:
没办法,我们制作一个完整调用pack类库的小程序,而后以此生成仅有依赖库的rt.jar,合并打包进自定义的rt.jar中,再次运行程序。OK,通过了。
不知道pack类库是个什么,所以也没法进行下去。
原理:
精简jre,然后将jre和jar,以及可以告诉电脑jar和jvm在哪的一个exe放一起
【Java应用定制工厂】
参考文章:
http://www.2cto.com/kf/201112/113906.html
感受:
比上面的GreenJVMMake好用很多,
功能有:精简jre,将精简的jre和jar生成exe
其中精简有两种模式,
一是仅仅包含运行时用到的类,这种精简后jre很小;
另一种是包含运行时用到的类和其依赖的所有类,这种精简后jre稍大,但是出错少。
原理:
将jre精简,然后将jre,jar放到一个文件夹,生成exe,告诉电脑jar和jvm在哪,
exe也是不能脱离这个文件夹。
【推荐】
要是想将自己写的jar程序放到其他没有jre电脑上也可以用,
推荐这种方式:Java应用定制工厂 + Inno Setup
几种jar转exe方法的比较的更多相关文章
- Java程序如何生成Jar、exe及安装文件
http://blog.csdn.net/luoweifu/article/details/7628006/ 一.用Eclipse生产Jar文件 首先,看一下我的项目的目录结构: 1,项目名字上面点右 ...
- MSSTDFMT.dll系统文件(附2种MSSTDFMT.dll 注册方法)-系统增强
MSSTDFMT.dll系统文件(附2种MSSTDFMT.dll 注册方法)-系统增强 msstdfmt.dll是微软标准数据格式对象相关动态链接库文件. msstdfmt.dll里面包含了定义好函数 ...
- jsp的服务器响应,out.println 与response.setIntHeader的报错解决方案,附:导入jar包的方法
在九大内置对象中,笔者认为用的最多的就是out.println 与response.setIntHeader,今天刚写了一个服务器响应的代码,也总是这两个报错.具体请看图. 先来说说response. ...
- 几种封装javaBean的方法
开发框架时,经常需要使用java对象(javaBean)的属性来封装程序的数据,封装javaBean的方法有很多,比如反射,内省,以及使用工具类.下面从反射开始介绍. 1.javaBean介绍: 简介 ...
- 双击jar包运行方法
方案一 在jar包同级,写个bat文件,如下 java -jar Xxx.jar pause 方案二 右击jar文件 ->打开方式->选择安装的jre/bin/javaw.exe. 双击依 ...
- exe4j打包--jar打包exe
本文重点介绍如何将我们写的java代码打包成在电脑上可以运行的exe文件.这里只介绍直接打包成exe的方法,至于打包成exe安装包下节介绍 test 软件准备 exe4j集合包下载地址(下节内容也在这 ...
- javascript四种类型识别的方法
× 目录 [1]typeof [2]instanceof [3]constructor[4]toString 前面的话 javascript有复杂的类型系统,类型识别则是基本的功能.javascrip ...
- iOS 三种收起键盘的方法
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...
- 干货:结合Scikit-learn介绍几种常用的特征选择方法
原文 http://dataunion.org/14072.html 主题 特征选择 scikit-learn 作者: Edwin Jarvis 特征选择(排序)对于数据科学家.机器学习从业者来说非 ...
随机推荐
- 2017.11.28 Enginering management:problem-solving ability
Today,my colleague is on bussiness trip. going to customer factory in jiangxi. slove the color diffe ...
- GCD多线程的使用
转载自http://blog.csdn.net/nono_love_lilith/article/details/7829557 写得非常好 1.下面来看下如何使用gcd编程的异步 dispatch_ ...
- MySQL 添加、查看字段注释
语法: 创建表时的COMMENT内容,要查看这些内容,使用命令: show full fields from '表名称'; 查看tb_usr表字段注释: 创建新表的脚本中, 可在字段定义脚本中添加co ...
- 已知一个数组a[N]来构造数组b[N]的有趣算法题
给定一个数组a[N],我们希望构造数组b[N],其中b[i]=a[0]*a[1]*...*a[N-1]/a[i].在构造过程要求满足:1.不使用除法:2.O(1)空间复杂度和O(n)时间复杂度:3.除 ...
- UVA - 1603 Square Destroyer (DLX可重复覆盖+IDA*)
题目链接 给你一个n*n的由火柴组成的正方形网格,从中预先拿掉一些火柴,问至少还需要拿掉多少火柴才能破坏掉所有的正方形. 看到这道题,我第一反应就是——把每根火柴和它能破坏掉的正方形连边,不就是个裸的 ...
- STL的erase函数和lower_bound
前提摘要: [1]一般我们的区间是左闭右开,如下面例子2. [2]erase函数谨慎使用. [3]map也是有序保存的. [erase] 1,删除字符串的首字母: string s="ecu ...
- C#异步编程(三)内核模式线程同步
其实,在开发过程中,无论是用户模式的同步构造还是内核模式,都应该尽量避免.因为线程同步都会造成阻塞,这就影响了我们的并发量,也影响整个应用的效率.不过有些情况,我们不得不进行线程同步. 内核模式 wi ...
- 学习动态性能表(16)--v$rowcache
学习动态性能表 第16篇--V$ROWCACHE 2007.6.12 本视图显示数据字典缓存(也叫rowcache)的各项统计.每一条记录包含不同类型的数据字典缓存数据统计,注意数据字典缓存有层次差 ...
- Vue forms
Vue forms Vue 的表单. 表单中的数据和是双向绑定的. 你可以使用 v-model 对控件元素进行数据双向绑定. 比较有用的修饰符 .lazy .number .trim
- BZOJ4358:permu
浅谈\(K-D\) \(Tree\):https://www.cnblogs.com/AKMer/p/10387266.html 题目传送门:https://lydsy.com/JudgeOnline ...