原摘自:https://blog.csdn.net/uikoo9/article/details/7458666

几种jar转exe方法的比较
2012年04月13日 17:33:07

阅读数:15396

【前言】

今天一天就做这个了,无语了,焦头烂额啊,

其实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方法的比较的更多相关文章

  1. Java程序如何生成Jar、exe及安装文件

    http://blog.csdn.net/luoweifu/article/details/7628006/ 一.用Eclipse生产Jar文件 首先,看一下我的项目的目录结构: 1,项目名字上面点右 ...

  2. MSSTDFMT.dll系统文件(附2种MSSTDFMT.dll 注册方法)-系统增强

    MSSTDFMT.dll系统文件(附2种MSSTDFMT.dll 注册方法)-系统增强 msstdfmt.dll是微软标准数据格式对象相关动态链接库文件. msstdfmt.dll里面包含了定义好函数 ...

  3. jsp的服务器响应,out.println 与response.setIntHeader的报错解决方案,附:导入jar包的方法

    在九大内置对象中,笔者认为用的最多的就是out.println 与response.setIntHeader,今天刚写了一个服务器响应的代码,也总是这两个报错.具体请看图. 先来说说response. ...

  4. 几种封装javaBean的方法

    开发框架时,经常需要使用java对象(javaBean)的属性来封装程序的数据,封装javaBean的方法有很多,比如反射,内省,以及使用工具类.下面从反射开始介绍. 1.javaBean介绍: 简介 ...

  5. 双击jar包运行方法

    方案一 在jar包同级,写个bat文件,如下 java -jar Xxx.jar pause 方案二 右击jar文件 ->打开方式->选择安装的jre/bin/javaw.exe. 双击依 ...

  6. exe4j打包--jar打包exe

    本文重点介绍如何将我们写的java代码打包成在电脑上可以运行的exe文件.这里只介绍直接打包成exe的方法,至于打包成exe安装包下节介绍 test 软件准备 exe4j集合包下载地址(下节内容也在这 ...

  7. javascript四种类型识别的方法

    × 目录 [1]typeof [2]instanceof [3]constructor[4]toString 前面的话 javascript有复杂的类型系统,类型识别则是基本的功能.javascrip ...

  8. iOS 三种收起键盘的方法

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  9. 干货:结合Scikit-learn介绍几种常用的特征选择方法

    原文  http://dataunion.org/14072.html 主题 特征选择 scikit-learn 作者: Edwin Jarvis 特征选择(排序)对于数据科学家.机器学习从业者来说非 ...

随机推荐

  1. New Concept English three (58)

    30w/m 76 errors The old lady was glad to be back at the block of flats where she lived. Her shopping ...

  2. hdu4771 Stealing Harry Potter's Precious(DFS,BFS)

    练习dfs和bfs的好题. #include<iostream> #include<cstdio> #include<cstdlib> #include<cs ...

  3. Linux命令学习(20):traceroute命令

    版权声明 更新:2017-06-13博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下面的mv命令. 2 ...

  4. ZOJ Anagrams by Stack(堆栈中的搜索)

    个人心得:算法书中的第一个例题就来了一个下马威,虽然题意很好理解但是做起来确实这么不顺手,所以自己对于搜索和堆栈理解的并不是很好, 以前也是很多这样的题目无法实施,这题要做的很明确就是输出正确的能依靠 ...

  5. SpringCloud微服务实战——第二章Springboot

    Spring Boot项目工程 src/main/java:主程序入口HelloApplication,可以通过直接运行该类来启动Spring Boot应用. src/main/resources:配 ...

  6. [C++] 动态规划之矩阵连乘、最长公共子序列、最大子段和、最长单调递增子序列、0-1背包

    一.动态规划的基本思想 动态规划算法通常用于求解具有某种最优性质的问题.在这类问题中,可能会有许多可行解.每一个解都对应于一个值,我们希望找到具有最优值的解. 将待求解问题分解成若干个子问题,先求解子 ...

  7. mvn + idea jar包配置 错误记录

    1.创建项目方法和步骤,网上一搜一大把 2.主要出现了一个配置上的错误,java_home的配置 发现idea和eclipse有一个地方配置不同,就是java_home,在eclipse中 mvn的配 ...

  8. Oracle 文件

    参数文件 跟踪文件 告警文件 数据文件 临时文件 控制文件 重做日志文件 密码文件 闪回日志 dum文件 数据泵文件 1参数文件 Parameter file:告诉oracle实例在那里可以找到控制文 ...

  9. Java多线程中的常用方法

    本文将带你讲诉Java多线程中的常用方法   Java多线程中的常用方法有如下几个 start,run,sleep,wait,notify,notifyAll,join,isAlive,current ...

  10. “百度杯”CTF比赛 2017 二月场(Misc Web)

    爆破-1: 打开链接,是502 我直接在后面加个变量传参数:?a=1 出了一段代码 var_dump()函数中,用了$$a,可能用了超全局变量GLOBALS 给hello参数传个GLOBALS 得到f ...