可以用的上的有:

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这种异常。

转载于:https://www.cnblogs.com/liaojie970/p/5390020.html

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. MANIFEST.MF文件全面解析

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

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

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

  5. IntelliJ IDEA打jar时,MANIFEST.MF内容出错

    我在使用IntelliJ IDEA打jar包的时候,选择了HelloWorldServer作为main函数入口.生成的MANIFEST.MF内容如下: Manifest-Version: 1.0Mai ...

  6. MANIFEST.MF

    对模块和元数据进行打包 我们这个模块系统需要一种方法来对模块的内容以及描述导入和导出的元数据进行打包,将其包括到一个可部署的单元中. Java 已经有了标准的部署单元:JAR 文件.JAR 文件可能并 ...

  7. How to read MANIFEST.MF file from JAR using Bash

    为什么80%的码农都做不了架构师?>>>    $ unzip -q -c myarchive.jar META-INF/MANIFEST.MF -q will suppress v ...

  8. MANIFEST.MF的文件的作用

    在web项目中一个war包下面有一个文件叫:MANIFEST.MF 这个文件的作用是:告诉我们的信息有: Manifest-Version: 1.0 Built-By: 张三(由谁创建) Build- ...

  9. meta-inf文件夹以及MANIFEST.MF文件的作用

    meta-inf相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序.扩展程序.类加载器和服务 manifest.mf文件,在用jar打包时自动生成的. META-I ...

最新文章

  1. C标准库 limits.h
  2. http://m.blog.csdn.net/article/details?id=2630620
  3. 用人脑生成等概率随机数,困扰人类30万年的问题解决了 | 附“源代码”
  4. Subversion客户端认证凭证缓存总结
  5. 计算机 专业英语 考试,《计算机专业英语》期末考试试卷
  6. centos .php 源码,CentOS 源码安装PHP
  7. Spring Boot集成Druid监控
  8. python怎么发送邮件_Python面试题之如何用Python来发送邮件?
  9. android开发技术探索,《android开发艺术探索》读书笔记(十三)--综合技术(示例代码)...
  10. 除了要求app随手机壳颜色变之外,产品还要求....
  11. 用python输入名字并打印_python的输出与输入
  12. 外媒:现代和起亚计划在新一代电动汽车上使用碳纳米管加热器
  13. 催收评分卡(二)关于催收评分卡的血泪史
  14. 【杂谈】需要mark的一些东西
  15. Java小项目(一)---超市管理系统
  16. C# MessageQueue例子
  17. cacti更改显示图像的title
  18. 电商API:淘宝/天猫获取sku详细信息
  19. Apache服务安装完整教程
  20. Dubbo Cluster集群那点你不知道的事。

热门文章

  1. mysql从5.1.63升级到5.6.20出现的问题
  2. 去除html标签的工具类,Java正则匹配过滤移除html标签以及获取img完整标签工具类...
  3. python爬取网页上的特定链接_python 用bs4解析网页后,如何循环打开爬取出来的网址链接?...
  4. 计算机网络课设-小型校园网,计算机网络课设 小型校园网
  5. linux下解压命令.7z,CentOS 下安装7-Zip 以及常用的解压命令
  6. android xml黑体字_为 Android 换上任意喜欢的字体,你可以试试这个 Magisk 模块
  7. go 写文件_Pythonista 的 Go 之旅
  8. python 爬取网页内容 snmp_python通过SNMP协议收集服务器监控信息
  9. html链接sqlserver,js连接sqlserver进行查询
  10. c++ fork 进程时 共享内存_尚学堂百战程序员:Python多进程与共享内存