可以用的上的有:

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的用途相关推荐

  1. MANIFEST.MF的用途(转载)

    可以用的上的有: 1. Main-Class 指定程序的入口,这样可以直接用java -jar xxx.jar来运行程序. 2. Class-Path 指定jar包的依赖关系,class loader ...

  2. MANIFEST.MF文件的格式

    MANIFEST.MF文件的格式 1. 基本格式 属性名称+:+空格+属性值 2. 没行最多72个字符,换行继续必须以空格开头 3. 文件最后必须要有一个回车换行 4. Class-Path 当前路径 ...

  3. java jar包中MANIFEST.MF中有版本信息

    有时候查看人家的源代码,但有可能该软件有很多个版本,这个时候就可以通过 MANIFEST.MF来查看当前项目引用的是哪个版本.当然了如果本身jar包名已经是用版本号来命名的.则不需要这样查看. 可以参 ...

  4. MANIFEST.MF文件全面解析

    (一)简介 当我们用Jar命令打完包后,会在根目录下面创建META-INF目录,该目录下面会有一些对该Jar包信息的描述,其中肯定会有一个MANIFEST.MF文件,该文件包含了该Jar包的版本.创建 ...

  5. Android APK 签名文件MANIFEST.MF、CERT.SF、CERT.RSA分析

    首先我们找一个已经签名的apk文件,修改后缀名为zip,然后解压.可以看到里面有一个META-INF文件夹,里面就是签名验证的文件.有三个文件MANIFEST.MF.CERT.SF.CERT.RSA分 ...

  6. manifest.mf._MANIFEST.MF和feature.xml版本控制规则

    manifest.mf. 我永远都忘记了OSIF插件和功能的 MANIFEST.MF和feature.xml中的依赖项声明的规则是什么. 谷歌搜索经常导致沮丧而不是答案. 因此,因为今天我实际上找到了 ...

  7. MANIFEST.MF和feature.xml版本控制规则

    我永远忘记了OSIF插件和功能的 MANIFEST.MF和feature.xml中的依赖项声明的规则是什么. 谷歌搜索经常导致沮丧而不是答案. 所以,因为今天我实际上找到了这些规则的简要列表,所以我想 ...

  8. Java 打 jar 包时,MANIFEST.MF 文件详解

    具体详情,详见<MANIFEST.MF文件详解> manifest.mf 的编写规则 不能有空行和空格的地方 第一行不可以是空行(第一行的行前不可以有空行),行与行之间不能有空行,每行的行 ...

  9. Springboot读取jar包中的MANIFEST.MF文件内容

    Springboot打包成可执行jar包后,包结构如下所示: 工程编译后的文件都在BOOT-INF/classes目录下,如果需要读取并显示META-INF/MANIFEST.MF文件内容,那么可以用 ...

最新文章

  1. mysql网页后台_jsp+servlet+mysql开发java web旅游网站,有后台管理系统
  2. H5跟ios、android交互跟数据对接
  3. js文件引用 webpack_想了解Webpack,看这篇就够了
  4. 简单的通讯录程序系统python
  5. jvm参数调优堆的初始和最大值一定要一致
  6. 程序员如何高效的学习?
  7. 解析 Linux 中的 VFS 文件系统机制
  8. 参考平面及其高度_柱面及其方程
  9. 阅读笔记11-孤独后厂村:30万互联网人跳不出的中国硅谷
  10. work summary(3)
  11. 百世集团2015暑期实习研发工程师笔试题
  12. 电力网络故障的计算机算法,电力系统故障分析的计算机算法.pdf
  13. bes2300 tws配对_入门级TWS真无线耳机对比评测,看完之后你就知道怎么买了
  14. C++ 五大链表排序(冒泡、插入、选择、归并、快排)
  15. unlock-music-desktop解锁加密音乐桌面版
  16. php 执行bat文件,bat执行PHP文件
  17. 同一wifi下电脑共享文件夹
  18. 论文引用参考文献和自动更新的方法
  19. iptv增值服务_什么是IPTV,以及如何启动您自己的IPTV服务?
  20. Linux网络——套接字编程

热门文章

  1. 区分微信小程序版本(开发工具中、开发版、体验版、正式版)的方法?
  2. 红米手机开发版怎么样获取ROOT权限
  3. office365 word如何关闭首字母大写
  4. web前端进阶<7>:3d图像翻转效果
  5. linux任务调度框架,任务调度框架Hangfire 简介
  6. 移动端meta设置大全(持续收集中。。。。)
  7. IDEA添加oracle数据库时不显示数据表
  8. ③设计模式之单例模式
  9. MFC 根据圆心和半径画圆
  10. Qt 界面获取键盘Enter键