MANIFEST.MF的用途
可以用的上的有:
1. Main-Class 指定程序的入口,这样可以直接用java -jar xxx.jar来运行程序。
2. Class-Path 指定jar包的依赖关系,class loader会依据这个路径来搜索class。
我平时用mf文件一般说来都是让jar成为可以直接运行这一目的。虽然目的这么简单,但是每次打包还是很容易出现各种各样的问题让人头痛。mf总是没有被应用,或者是出错了。
首先给出一个简单而标准的例子:
Manifest-Version: 1.0
Main-Class: ui.JFrameMain
Class-Path: jtds-1.2.jar c3p0-0.9.1.2.jar
esri_mo20.jar esri_mo20res.jar jsde83_sdk.jar
解释一下:
Manifest-Version mf文件版本号,这行照抄
Main-Class 包含main函数的类,程序的入口
Class-Path 用到的一些包
分析一下要点:
要点1:每行的“:”(冒号)用来分隔键值对。冒号后边一定要跟一个空格!!!
也就是说务必写为:
Main-Class:(空格)YouClassName
Class-Path:(空格)Class1.Jar
否则JBuilder会报("Manifest.mf": Error reading manifest: java.io.IOException: invalid header field
) 这样的错。不再IDE帮助下做的JAR会发现MF没有起到应有的作用。顺便说一下以前我看到JBuilder报另一个个错大概说是什么换行符不对,好像也 是由于这个问题引发的。原先总以为是windows里边的回车是由回车,换行2个字符构成而造成的。现在看来好像不是这样,是因为少了冒号后边那个空格。
要点2:Class-Path里边的内容用空格分隔而不是逗号或者分号。(唉。。。我总是下意识的用分号)
也就是说务必写成:
Class-Path:(空格)Class1.jar(空格)Class2.jar(空格)Class3.Jar
要点3:有的文章说MF文件每行不能超过七十多的字符,我的经验是如果在JBuilder里编辑MF超过了也无妨,一般我是尽量一行写完。续行挺麻烦又要以空格开头什么的。我也经常直接用winRar打开jar然后直接编辑里边的mf文件,这是个好方法,很直接了当,缺点就是如果改坏了也不会报错,只是MF有的部分失效了,好像运行时也会说"错误的MF文件版本"。
介绍几个技巧:
技巧1:使用winRar打开jar,双击MF文件,就可以编辑了,编辑完了Ctrl+S保存。特方便。也可以在外边写好一个Manifest.mf,然后直接拖入覆盖以前的。
技巧2:写一个run.bat来运行你的jar。run.bat大体内容如下:
java -jar yours.jar
pause
后边加一个pause就可以让你看到具体哪里出错了,一般来说问题如果出在MF上,那么往往就是哪个包,哪个类没有找到的NoClassDef这种异常。
MANIFEST.MF的用途相关推荐
- MANIFEST.MF的用途(转载)
可以用的上的有: 1. Main-Class 指定程序的入口,这样可以直接用java -jar xxx.jar来运行程序. 2. Class-Path 指定jar包的依赖关系,class loader ...
- MANIFEST.MF文件的格式
MANIFEST.MF文件的格式 1. 基本格式 属性名称+:+空格+属性值 2. 没行最多72个字符,换行继续必须以空格开头 3. 文件最后必须要有一个回车换行 4. Class-Path 当前路径 ...
- java jar包中MANIFEST.MF中有版本信息
有时候查看人家的源代码,但有可能该软件有很多个版本,这个时候就可以通过 MANIFEST.MF来查看当前项目引用的是哪个版本.当然了如果本身jar包名已经是用版本号来命名的.则不需要这样查看. 可以参 ...
- MANIFEST.MF文件全面解析
(一)简介 当我们用Jar命令打完包后,会在根目录下面创建META-INF目录,该目录下面会有一些对该Jar包信息的描述,其中肯定会有一个MANIFEST.MF文件,该文件包含了该Jar包的版本.创建 ...
- Android APK 签名文件MANIFEST.MF、CERT.SF、CERT.RSA分析
首先我们找一个已经签名的apk文件,修改后缀名为zip,然后解压.可以看到里面有一个META-INF文件夹,里面就是签名验证的文件.有三个文件MANIFEST.MF.CERT.SF.CERT.RSA分 ...
- manifest.mf._MANIFEST.MF和feature.xml版本控制规则
manifest.mf. 我永远都忘记了OSIF插件和功能的 MANIFEST.MF和feature.xml中的依赖项声明的规则是什么. 谷歌搜索经常导致沮丧而不是答案. 因此,因为今天我实际上找到了 ...
- MANIFEST.MF和feature.xml版本控制规则
我永远忘记了OSIF插件和功能的 MANIFEST.MF和feature.xml中的依赖项声明的规则是什么. 谷歌搜索经常导致沮丧而不是答案. 所以,因为今天我实际上找到了这些规则的简要列表,所以我想 ...
- Java 打 jar 包时,MANIFEST.MF 文件详解
具体详情,详见<MANIFEST.MF文件详解> manifest.mf 的编写规则 不能有空行和空格的地方 第一行不可以是空行(第一行的行前不可以有空行),行与行之间不能有空行,每行的行 ...
- Springboot读取jar包中的MANIFEST.MF文件内容
Springboot打包成可执行jar包后,包结构如下所示: 工程编译后的文件都在BOOT-INF/classes目录下,如果需要读取并显示META-INF/MANIFEST.MF文件内容,那么可以用 ...
最新文章
- mysql网页后台_jsp+servlet+mysql开发java web旅游网站,有后台管理系统
- H5跟ios、android交互跟数据对接
- js文件引用 webpack_想了解Webpack,看这篇就够了
- 简单的通讯录程序系统python
- jvm参数调优堆的初始和最大值一定要一致
- 程序员如何高效的学习?
- 解析 Linux 中的 VFS 文件系统机制
- 参考平面及其高度_柱面及其方程
- 阅读笔记11-孤独后厂村:30万互联网人跳不出的中国硅谷
- work summary(3)
- 百世集团2015暑期实习研发工程师笔试题
- 电力网络故障的计算机算法,电力系统故障分析的计算机算法.pdf
- bes2300 tws配对_入门级TWS真无线耳机对比评测,看完之后你就知道怎么买了
- C++ 五大链表排序(冒泡、插入、选择、归并、快排)
- unlock-music-desktop解锁加密音乐桌面版
- php 执行bat文件,bat执行PHP文件
- 同一wifi下电脑共享文件夹
- 论文引用参考文献和自动更新的方法
- iptv增值服务_什么是IPTV,以及如何启动您自己的IPTV服务?
- Linux网络——套接字编程