教你打包Java程序,jar转exe随处可跑

简介:

  本文出自One Coder博客,转载请务必注明出处:

发现很多人问如何把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指定的。
关于JSmooth的教程,笔者找到了一个不错的教学贴: http://yisufuyou.iteye.com/blog/403556
 
按照里面的步骤,你一定可以成功。

说了这么多,如果还有什么不明白的,可以给我留言,一起讨论研究。
 
PS1:默认的JRE体积实在太大,你可以考虑精简JRE还节约空间,这部分内容,不在本文讨论。另外,如果你想把你的软件做成安装包的形势,可考虑InstallAnyWhere(http://www.flexerasoftware.com/products/installanywhere.htm)这个工具,会有
 
PS2:笔者研究的过程中,为了模拟没有JRE的环境,真是百般折腾,因为笔者把所有环境变量都删掉,还有可以运行。不知道是不是从JDK7开始,Java居然在我的System32路径下,也放置Java.exe等程序,也就是说,不用配置Path了。jre路径的指定,貌似也写入了注册表,不过这点,笔者没有亲自证实,只是在注册表中简单的搜索了一下,仅发现了JavaFX的配置和一些其他的Java配置,没有深入研究,不好定论。有兴趣可以研究下,也麻烦告诉我一声。
 
本文出自 One Coder博客,转载请务必注明出处:


     本文转自mushiqianmeng 51CTO博客,原文链接:http://blog.51cto.com/mushiqianmeng/900576,如需转载请自行联系原作者


相关文章
|
1月前
|
前端开发 JavaScript Java
Java打包jar运行时分离lib和jar
在`pom.xml`的`build`节点中,设置`packaging`为`jar`,并配置插件分离依赖库到`lib`目录和资源文件到`resources`目录。这样可以在运行时通过`-Dloader.path=lib,resources`加载外部依赖和资源文件,便于独立升级依赖库和修改资源文件,而无需重新打包程序。具体插件包括`maven-dependency-plugin`、`maven-resources-plugin`和`spring-boot-maven-plugin`等。
64 1
|
3月前
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
966 8
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
4月前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
467 3
|
4月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
231 4
|
4月前
|
Java Maven Android开发
【Azure Developer】VS Code打包Java maven Project 遇见 BUILD FAILURE
Unknown lifecycle phase "lean". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
|
4月前
|
数据采集 分布式计算 Java
Kettle的Java开发环境需要什么jar包?
【10月更文挑战第24天】Kettle的Java开发环境需要什么jar包?
218 2
|
10月前
|
算法 Java 数据处理
Java程序性能优化研究
Java程序性能优化研究
91 0
|
10月前
|
缓存 监控 算法
Java程序性能优化策略与实践
在当今软件开发领域,Java作为一种广泛应用的编程语言,其程序性能优化显得尤为重要。本文将介绍一些Java程序性能优化的策略和实践,帮助开发者提高代码执行效率、减少资源消耗,并优化用户体验。通过深入探讨各种优化技术和工具,读者将能够更好地理解和运用这些策略,有效提升Java应用程序的性能。
73 1
|
监控 算法 Java
限时!字节Java程序性能优化宝典开源,原来这才叫性能优化
让你的Java程序更快、更稳定 程序的性能受代码质量的直接影响。那么该如何让代码在级别上提升系统性能呢? 其实性能提升永远没有捷径,需要 分析、优化、实验、监控 ,需要一点点积累和深入。随着你对项目和性能优化理解不断深入,会发现提升性能的手段变得越来越丰富,性能数据自然也会跟着上去。 一个优秀的程序员,不仅要会编写程序,更要会编写高质量的程序感受Java开发中的大智慧,让你的Java程序更优美。那么今天LZ挖出一份有关Java程序性能优化的文档,可以让你的Java程序更快、更稳定,主要是涵盖了一些Java程序的优化方法和技巧:
85 1
竟有阿里大牛用678页PDF只讲Java程序性能优化,除了干货就是干货
Java程序性能优化虽然是一个老生常谈的话题,但想要把这个话题真正讲解清楚却并不容易。目前,市面上为数不多的讲解Java程序性能优化的图书内容不够深入,讲解也不够浅显易懂,有的甚至晦涩难懂。

热门文章

最新文章