jar 打包java文件
研究了一会怎么用jar命令直接打包可执行jar,写篇文章做个笔记。有人看就当是博客没人看就当笔记了。
其实主要步骤是配置MANIFEST.MF,MANIFEST.MF在META-INF文件夹里。
这里给个例子,在本工程了有一个可执行class(就是有main方法)learninggui.viplugincracker.Cracker,四个依赖库文件appFramework-1.0.jar,commons-codec-1.6.jar,jnlp.jar,licensechecker.jar
我们可以通过Eclipse生成的jar文件研究一下MAINFEST.MF怎么写
在Eclipse的Package Explorer邮件单击点export选Runnable JAR file,next
Launch Configuration选择启动的class;
方法一、
Library handling 第一个是把所需要的jar库全部解压到 jar文件的根目录,如果我们用压缩文件解压会看到这样的文件层次
这种方式生成的MANIFEST.MF文件内容如下
Manifest-Version: 1.0
Class-Path: .
Main-Class: learninggui.viplugincracker.Cracker
这里需要注意的是冒号后面要有一个空格(经过试验发现多个空格也是可以的)不然会出现下图的错误
Mainfest-Version是版本号,Class-Path是和CLASSPATH作用一样的,Main-Class就是可运行jar必须的,指定了jar运行时启动的class。因为Class-Path是一个点也就是jar里面的根目录,所以依赖的class文件都可以找到。
于是我们就可以自己依葫芦画瓢了,把所需要的库文件都就压到要打包的文件夹里然后在该文件夹新建META-INF文件夹再在META-INF文件夹新建MANIFEST.MF,内容依上面的实例改写。
然后用jar命令打包
cd 到要打包的jar文件夹,输入以下命令:
jar cvfm a.jar META-INF/MANIFEST.MF .
参数c是指创建归档,v是verbose(啰嗦的意思)指显示详细输出,f是指定文件 不然不能指定输出文件a.jar,最后的m就是指包含MANIFEST.MF的清单信息对应参数META-INF/MANIFEST.MF 注意最后还有一个参数是个点是指从当前目录创建归档。
方法二、
![](https://img-my.csdn.net/uploads/201304/14/1365944871_2085.png)
Manifest-Version: 1.0
Rsrc-Class-Path: ./ jnlp.jar appFramework-1.0.jar licensechecker.jar commons-codec-1.6.jar
Class-Path: .
Rsrc-Main-Class: learninggui.viplugincracker.Cracker
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
这里多了两个变量Rsrc-Class-Path和Rsrc-Main-Class,而且Main-Class也已经不是我们正真的class: learninggui.viplugincracker.Cracker了。看Main-Class的包名就知道了是Eclipse的class加载器(不知道是不是重载的ClassLoader)。这么说Rsrc-Class-Path和Resr-Main-Class应该是Eclipse的class 加载器所需要的变量。不过从这个文件我们可以看出来Class-Path的不同值之间是用一个空格来间隔开的。不知道Eclipse是出于什么原因要加入自己的Class加载器。但是我们自己打包的时候肯定不会再去找Eclipse的这些东西,于是我们试着自己打包。把编译好的文件复制到工作目录下,新建一个lib目录来存放以来的jar文件,把所有依赖的jar拷贝到lib目录
![](https://img-my.csdn.net/uploads/201304/14/1365944886_1336.png)
Mainfest-Version: 1.0
Class-Path: . ./lib/appFramework-1.0.jar ./lib/commons-codec-1.6.jar ./jnlp.jar ./licensechecker.jar
Main-Class: learninggui.viplugincracker.Cracker
再用上面的打包命令:
jar cfm a.jar META-INF/MAINFEST.MF .
打包之后双击运行~嗯~feels good~
方法三、
![](https://img-my.csdn.net/uploads/201304/14/1365945147_5586.png)
Manifest-Version: 1.0
Class-Path: . 4_lib/jnlp.jar 4_lib/appFramework-1.0.jar 4_lib/licensechecker.jar 4_lib/commons-codec-1.6.jar
Main-Class: learninggui.viplugincracker.Cracker
经过上面几个MANIFEST.MF的研究这个不用说就很明了了。具体做法依旧不赘述了。
jar 打包java文件相关推荐
- myeclipse打包java文件_MyEclipse将Java项目打包成jar文件的三种方法
方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 "MANIFEST.MF", 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFE ...
- od怎么解java打包的exe_关于打包java文件并生成可执行文件的问题
使用java写出的程序不像C++的exe可以直接双击执行,这个有时候会有很多不便,还好java提供了一种打包机制,可以帮助我们实现双击即可执行的夙愿.参考了一些资料,这里把这个过程跟大家分享下.只做演 ...
- java生成可执行文件_关于打包java文件并生成可执行文件的问题
使用java写出的程序不像C++的exe可以直接双击执行,这个有时候会有很多不便,还好java提供了一种打包机制,可以帮助我们实现双击即可执行的夙愿.参考了一些资料,这里把这个过程跟大家分享下.只做演 ...
- Java反编译jar成Java文件
Luyten简介 Luyten Mac版是Mac平台上的一款Java反编译工具,Luyten Mac版是一款很强大的反编译工具包,是一款github的开源工具,它的功能非常强大,界面简洁明晰.操作方便 ...
- Jar 打包 EXE文件,可以脱离java环境运行 Jsmooth的使用
1.首先准备我们的资源,把要转换的Jar文件.精简过的JRE文件夹和想生成的EXE文件的图标(可以是png,jpg等格式,不想加图标可以不弄)放到同一个文件夹内.这一步一定要做,否则可以成功生成,但在 ...
- 使用installanywhere打包java文件生成任何平台都可以运行的程序(如.exe)(关闭360!)
InstallAnywhere使用与下载 (2011-07-05 18:30:36) 转载▼ 标签: install anywhere 安装文件 安装目录 软件解决方案 安装包 it 分类: Java ...
- Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...
一,实例:新建了一个Maven项目,在eclipse中通过 build path –> configure path-.将依赖包添加到工程中后,eclipse不报错了.但是用Maven命令 mv ...
- 把java文件打包成.jar (jar命令详解)
把java文件打包成.jar (jar命令详解) 先打开命令提示符(win2000或在运行框里执行cmd命令,win98为DOS提示符),输入jar Chelp,然后回车(如果你盘上已经有了jdk1. ...
- 使用命令将单个java文件打包为jar
思路:先将java文件编译为class文件,然后再打包为jar 参考博文:https://www.cnblogs.com/sxdcgaq8080/p/8126770.html http://www.m ...
最新文章
- 如何利用【百度地图API】,制作房产酒店地图?(下)——结合自己的数据库...
- 『JavaScript』核心
- 使用Redis的简单消息队列
- 荣耀变鸿蒙系统,鸿蒙系统首批升级机型曝光!荣耀手机遗憾缺席,原因很简单...
- C语言6F多少,求助!!请人帮忙画C语言程序流程图.紧急!!!
- Asp.Net MVC中使用ACE模板之Jqgrid
- django解决借用Model使用数据库时报错 AttributeError: Manager isn‘t accessible via xxxxxModel instances
- 解锁设备_苹果新专利:用户可通过头显设备快速解锁多个附近设备
- java 视频提取音频 | Java工具类
- cocos2d实现语音_【Cocos Creator与C++知识分享】Creator接入呀呀语音SDK
- rhel配置DNS分析+实验
- day 9/16 css三大特性和盒子模型
- 1024_scsdn_徽章获取日_日常工作记录_百度图片爬取小程序
- 谈一下自己收集资料和整理资料的经验
- 信号的反射(振铃、台阶、回勾、尖峰毛刺)
- js导出科学计数法_怎么让js不自动转换成科学计数法
- 线性代数一些基础概念
- C程序查找段错误的方法
- 变电站巡检机器人 代替工人“翻山越岭”
- sublime Text Vue中常用插件汇总说明