本文出自One
Coder博客,转载请务必注明出处:http://www.coderli.com/archives/runnablejar-to-exe/
发现很多人问如何把Jar转成exe程序。可能是想双击运行和随处运行。其实这个并不难,我就简单总结几种方法,供大家参考,关键还是要知其所以然。
Java程序的运行不可能脱离JRE,不管你是Jar包还是exe程序。这点你必须了解。那么在没有JRE的机器上你的程序怎么跑?很简单,在你程序里带一份JRE就行了。
先介绍集中打包的方法:
Eclipse:
最简单直接的方法,选择你想打包的程序,右键export...
选择Runnable Jar file。(即可执行的Jar包)
选择你程序的主类,就是还有Main函数的类。点Finish即可。
在你的机器上,设置好Jar文件的打开方式(别默认用解压缩的工具打开就行),双击即可运行。
这个跟在命令行执行:
java -jar forfun.jar的效果是一样的。
其实一个Jar能运行,关键还是配置Jar内部的MANIFEST.MF文件。该文件存在于Jar包根目录的META-INF文件夹内。主要由于指定主类(Main)的位置:
Manifest-Version: 1.0
Main-Class: one.coder.jdk.JDKMain
版本可以自己指定,默认生成是1.0。主类位置需要指定。注意,Main-Class的冒号后,要跟一个空格。
如果你还有要依赖的Jar包,则可以配置Class-Path来指定。
Class-Path:./ logback-core-0.9.29.jar junit-4.9.jar slf4j-api-1.
6.1.jar logback-classic-0.9.29.jar hamcrest-core-1.1.jar
打开刚才生成的Jar文件,你可能发现多了一些Eclipse的东西,并且主类变成了
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
也就是通过Eclipse提供的这个主类来加载的你程序。如果你不喜欢这样,将其去掉。自己进行配置。笔者通过一个不依赖任何Jar包的小程序进行说明。
这是笔者打出Jar的内部截图,去掉所有跟我的程序不相关的东西。MANIFEST.MF的配置也很简单。
Manifest-Version: 1.0
Main-Class: one.coder.jdk.JDKMain
在有JRE的机器上,双击一样可以运行。
注:这里需要提一下,尽量不用用解压软件自带的编辑器进行编辑,如果你编辑后发现不能运行,提示打开jar错误等信息,很可能是由于你编辑的MANIFEST.MF文件的编码错误。导致无法解析。默认是采用ANSI编码格式的。不要改成UTF-8等。笔者被这个问题,困扰了近半个小时。
接下来说说在没有JRE的机器上怎么办?
最简单的手动的办法就是写一个bat脚本。并且带一份jre在你的程序里。
把图中的三个文件,放入同一个文件夹中。
start.bat内容如下:
.\jre7\bin\java -jar .\run.jar
说白了就似乎调用jre中的java命令,执行指定的jar程序。 双击start.bat,执行成功。
如果你非要打成exe程序,笔者推荐一个工具JSmooth。简单好用。同样这也肯定是需要JRE指定的。
按照里面的步骤,你一定可以成功。
说了这么多,如果还有什么不明白的,可以给我留言,一起讨论研究。
PS1:默认的JRE体积实在太大,你可以考虑精简JRE还节约空间,这部分内容,不在本文讨论。另外,如果你想把你的软件做成安装包的形势,可考虑InstallAnyWhere(http://www.flexerasoftware.com/products/installanywhere.htm)这个工具,会有
PS2:笔者研究的过程中,为了模拟没有JRE的环境,真是百般折腾,因为笔者把所有环境变量都删掉,还有可以运行。不知道是不是从JDK7开始,Java居然在我的System32路径下,也放置Java.exe等程序,也就是说,不用配置Path了。jre路径的指定,貌似也写入了注册表,不过这点,笔者没有亲自证实,只是在注册表中简单的搜索了一下,仅发现了JavaFX的配置和一些其他的Java配置,没有深入研究,不好定论。有兴趣可以研究下,也麻烦告诉我一声。
分享到:
相关推荐
将一个java程序或项目打包成jar与exe文件 将一个java程序或项目打包成jar与exe文件 将一个java程序或项目打包成jar与exe文件
将Java开发程序打包成jar文件或exe文件所需的工具
所谓鱼与熊掌不可兼得,这样做虽然极大降低了程序的移植难度,却同时增加了程序的环境要求,因为无论你用什么方法,总需弄个虚拟机才能让你的Java程序跑起来(JET之类转Win32编译的方式愚以为不如直接写C++程序,...
NULL 博文链接:https://jarg.iteye.com/blog/852885
o给生成的exe可执行文件取名,如果想生成自定义图标,那么选择你的ico文件,如果你不想在一台电脑上运行多个你的程序,你可以勾选“Allow only a single…”。o点击next,然后出现下面界面。输入Java最小Jre版本号,...
内包含3个版本jar(64-32-精简版)包含jar打包为exe运行程序,exe打包为exe安装程序,可直接安装,不依托安装电脑是否有环境
本资源能够教你如何用netbeans和myeclipse打包javaGUI应用程序,然后将打包好的jar包转化成exe可执行文件,并且还可以定制的exe图标,最重要的功能是:exe能在客户端没有jdk的环境下运行
Eclipse打包带mysql的java程序
Java程序导出Jar包,然后 通过EXE4S生成
exe4j打包程序,jar包直接转换成exe程序
配置好launcher.cfg后,双击launch.exe即可运行java应用程序。 注意点:执行.exe文件时候会先找跟.exe文件同名的.cfg配置文件,如果没有则会找launcher.cfg文件。所以可以在同一个文件目录下有多个exe可执行文件,...
九、编译并生成 exe ..10 十、执行生成的 exe ..11 十一、常见问题.12 1、设置的 icon文件必须是.icon格式的;..12 2、设置的classpath必须能找到外部依赖包和文件; 12 3、执行生成的 exe文件,最好是在生成的...
Java程序打包工具exe4J,可将Java程序编译,并和所需的外部jar包一起打包成windows的exe可执行程序.
jar打包成exe,转载的,自己以后留着用
利用开源软件Launch4j把java 桌面应用程序打包成exe[图解]
将springboot打包成的jar文件做成windows服务,解决java程序自启动问题,适合现场部署后无人看管情况,断电后服务器启动后不用管理springboot服务,不用打开cmd,也不担心现场人员误操作关闭cmd窗口。
核心提示:首先,将编译好的程序打包成jar文件,然后做出exe,这样代码就不可见了;但是exe文件在没有安装jre的电脑上不能运行,如果要求客户再去安装jre 设置环境变量 就不雅了。我们需要将jre打包。 这几步操作...
将eclipse或者idea打包后的.jar包小工具类文件再打包成exe可执行文件。
一步一步教你打包成jar包到生成应用程序,并且撇开jdk之类的运行环境,直接把jre打包进去,完全不用考虑jdk环境问题。
eclipse插件,可以方便把做好的java桌面程序打包