首先声明,这里的内容全是我转载别人的,我只是把它们放在一起,总结一下,
转载
http://chenhua-1984.iteye.com/blog/410097
转载
http://smallbee.iteye.com/category/94677?show_full=true
文章分类:Java编程
java打包-exe文件-最终以setup形式发布的解决之道
[color=blue][/color][/size][size=large]首先,将编译好的程序打包成jar文件,然后做出exe,这样代码就不可见了;但是exe文件在没有安装jre的电脑上不能运行,如果要求客户再去安装jre 设置环境变量 就不雅了。我们需要将jre打包。
这几步操作网上介绍的插件和方法很多,但有的好用有的不好用,而且有的还需要注册。经过尝试比较,在“千里冰封”的博客上得到了很大的帮助。整理一下。使用这几个工具,您也可以顺利的发布您的java程序!
1 打包成双击可执行的jar文件。
推荐插件:fatJar(Eclipse使用)
下载地址 http://sourceforge.net/project/showfiles.php?group_id=115990&package_id=125924
我用的是Eclipse,它自带的打包方法在打包一些图片等资源时不是很爽。可以使用这个插件。
安装方法解压后将plugins文件夹下的net.sf.fjep.fatjar_0.0.24文件夹拷到eclipse安装目录的plugins 下。
用此工具可以方便的将eclipse中的工程打包成jar文件。如果是要打成可执行的jar请注意选取主类。
你的项目=〉Export..=>向导里有fat jar =>...
2 将jar文件转换成exe文件。
推荐工具:exe4j
用exe4j把java打包成exe
http://www.blogjava.net/hadeslee/archive/2007/10/12/152228.html
在我们写程序的时候,有时会有一种需求,那就是希望我们的程序是一个可执行文件,而不是一个 jar文件,其实大部份时候,可执行的jar文件都可以满足要求,但是如果我们的程序是需要保护的,那么打包成jar文件就不太安全了,因为jar文件就是一个解压缩文件,一解压就什么都能看到了,当然也可以选择混淆,但是混淆了以后排错就没那么容易了,因为混淆的时候,把一些类的信息都混淆了。如何既保证代码的安全又容易排错呢?那么打包成exe就是一种很好的办法了,其实我今天介绍这个方法并不是希望大家去打包成exe文件,因为exe文件毕竟不是跨平台的,用了exe的格式就失去了java的初衷了。
exe4j可以打包成各种格式的exe,可以把jar打包进exe,也可以引用一个外部的 jar文件,还可以打包成windows服务的程序,并且可以设置最低jre的版本,还可以设定启动画面,虽然java6.0已经实现了这一点,但是还是没有exe4j生成的启动画面快。
下面是我的一个完整的Java程序 —— MyLoading
可以看到已经附带了jre1.6 , 下面先使用exe4j给它制作一个exe执行文件(即上图的MyLoading.exe),并指定我们自带的jre1.6 。以下是exe4j的启动界面,点击下一步开始创建配置文件。
接着选择类型,我们选择第一个,这样可以保证程序仍具有跨平台的特性。如果选择第二个,可以把程序完全编译成exe文件,可以更好的保护你的程序不被反编译。当选择"jar in exe " mode 时可以把jar文件打包到exe中,发部时只用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
下面这一步只是简单的给程序添加一个启动画面,然后按默认下一步下一步就可以了。
如果不想打成exe安装,把所用到的.jar 和一些配置文件 放到执行exe同一个目录下
可以在没有安装java虚拟机的电脑上运行
3 将exe文件并jre打包成安装文件,可以在没有安装java虚拟机的电脑上运行
推荐工具:install4j
Install4j介绍
http://www.blogjava.net/hadeslee/archive/2007/10/15/152855.html
install4j是一个功能强大的,多平台Java安装文件生成工具,用于生成Java应用程序本地化的安装及应用程序发布。 install4j 的优异性在于它易于使用,紧密的集成到目标平台,以及灵活的JRE 管理与部署选项。
创建发布树
install4j的图形用户界面允许你:
* 完全自定义发布树
在发布树的每一个目录中,你能设置整个目录内容或是磁盘上任何目录的单个文件。定义的视图与结果视图让你能完全控制安装程序将发布的文件。
* 处理特定平台的差异
install4j提供方便的“包含/排除”机制,使其适应平台方式来进行发布。
* 针对Unix, Linux 及Mac OS X所定义的文件权限
对发布树的每一个元素,当其安装在类似于Unix这样的平台上时,你能自定义用户访问的权限。
* 定义优良的卸载策略
对发布树的每一个元素,你能决定在卸载时是否删除它。
* 定义覆盖策略
对发布树的每一个元素,你能配置不同的覆盖策略,当安装过程中需要覆盖文件时,这些覆盖策略会指示nstall4j进行相应的操作。
* 定义安装的组件
你能定义文件及目录的分组,形成分离的安装组件,这样你就可提供给用户来选择只安装一定的组件。
其实一个好的应用如果不太好布署,那么别人也只能对它望而兴叹了,现在有了 install4j,很多布署的问题几乎全部解决了.我们可以用exe4j打包java应用,然后用install4j发布java应用,以前java程序布署难的问题,现在几乎都解决了.install4j不但用于打包很合适,并且它还提供了一组很强大很实用的与平台相关的api.这些对于扩展我们的程序也是有很大的帮助的.
java.exe依照一套逻辑来寻找可以用的JRE,首先查找自己所在的目录下有没有JRE,其次查找自己的父目录下有没有JRE;最后才是查询Windows的注册表。
所以在没有把exe制作成安装程序时,我把它与jre 文件夹和jar文件放在同一个目录能运行,机子上不用装jre,
- 大小: 6.6 KB
分享到:
相关推荐
常见的这类工具有Launch4j、JSmooth、JAR to EXE Converter等,它们的工作原理通常是将Java应用程序(JAR文件)和一个小型的Java虚拟机(JVM)封装在一起,生成一个可以在Windows系统上直接执行的文件。 这些工具...
几乎涵盖所有的知识点,希望对你有所帮助.
最新中文J2SE API 不是你骂我 <br>共4个文件。。。。上传中
4. **调试与运行**:Visual J++提供了强大的调试工具,如断点设置、单步执行、变量查看等。点击“开始执行”按钮,程序会在本地Java虚拟机上运行,方便测试和调试。 【J++与标准Java的差异】 虽然J++提供了一个...
基于J2SE+Awt+Swing+Mysql餐厅前台+后台管理系统源码.zip 该工程属于J2SE 项目,使用Awt+Swing+Mysql。这是大二下学期暑假发了一个月时间做的,是一个别人给的需求,做一个餐厅前台+后台管理,按照需求分析做了一个...
J2SE上半部分(最新+完整版)
【Java(J2SE)版坦克大战游戏源码解析】 Java(J2SE)是Java标准版的简称,主要用于桌面应用程序开发。在这个坦克大战游戏中,开发者利用Java的强大功能和面向对象编程特性,构建了一个激动人心的对战环境,让玩家...
《J2SE人力资源管理系统:基于Struts1.0与Hibernate的实现详解》 在IT行业中,开发企业级应用是一项常见的任务,而Java平台因其稳定性和跨平台性,一直以来都是开发人员的首选。本文将深入探讨一个基于J2SE的人力...
DOM4J这个名字来源于Document Object Model (DOM) 和 Java,而4J则表示它是Java 4(即J2SE 1.4)时代的产品,尽管现在它已经兼容更现代的Java版本。 **DOM4J的特性:** 1. **灵活性**:DOM4J提供了一种灵活的方式来...
J2SE下半部分(最新+完整版)
J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API
4. **I/O流**:Java的I/O流模型提供了读写文件、网络通信的能力。InputStream和OutputStream是所有字节流的基类,而Reader和Writer则是字符流的基类。API文档会详细介绍各种流的用法。 5. **网络编程**:Java的...
6. **异常处理和日志记录**:工作日志文件表明项目中可能包含了详细的错误跟踪和日志记录机制,例如使用Java的`try-catch-finally`语句处理异常,同时使用如Log4j或SLF4J进行日志记录,以便于问题排查和系统监控。...
4. J2SE 1.6 (Java 6) API: 添加了JSR 223(Scripting for the Java Platform),允许在Java应用程序中嵌入脚本语言。增加了对JavaFX Script的支持,提升了Swing组件的功能。此外,改进了数据库连接池,增强了Java ...
Java 2 Platform, Standard Edition (J2SE) 是 Java 语言的核心部分,它提供了开发和运行桌面应用程序、服务器端应用程序以及嵌入式系统的环境。这个阶段的学习涵盖了Java的基础语法、面向对象编程、集合框架、多...
J2SE+J2EE+JAVAWEB"的压缩包文件,显然包含了Java开发者在面试中可能遇到的各种问题,涵盖了基础到高级的多个层面。以下是对这些标签和内容的详细解释: **J2SE (Java Standard Edition)**:它是Java平台的基础,...
4. **改进的JDBC**:Java Database Connectivity (JDBC) API在6.0版本中进行了优化,提升了数据库访问的性能和易用性。 5. **更新的并发工具**:Java并发包(java.util.concurrent)添加了更多的线程安全类和工具,...
J2SE 5EDdition.part4 J2SE 5EDdition.part4
Java Standard Edition(J2SE)是Java平台的核心部分,它为开发和运行桌面应用、服务器应用以及网络应用程序提供了基础框架。J2SE 6.0是Oracle公司发布的一个重要版本,包含了众多新特性、改进和优化,对于Java...