使用JAR包中MANIFEST.MF的注意事项

 更新时间:2023年07月21日 15:37:52   作者:lzhfdxhxm  
这篇文章主要介绍了使用JAR包中MANIFEST.MF的注意事项,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

JAR包中MANIFEST.MF注意事项

1. Manifest-Version    

用来定义manifest文件的版本,例如:Manifest-Version: 1.0

2. Created-By    

声明该文件的生成者,一般该属性是由jar命令行工具生成的,例如:Created-By: Apache Ant 1.5.1

3. Signature-Version    

定义jar文件的签名版本

4. Main-Class    

定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件。

5. Class-Path    

应用程序或者类装载器使用该值来构建内部的类搜索路径

注意事项

1.文件最后必须要有个换行(建议2个换行),而且该行不能有空格

2.Manifest-Version、Main-Class和Class-Path后面跟着一个英文的冒号,冒号后面必须跟着一个空格,然后才是版本号、类和ClassPath

3.jar包内有些配置文件想放在jar包外面,比如文件config.properties:如果这个文件是以路径方式载入的,比如new file("./config/config.properties"),那么将config.properties放在jar包相同目录下的config目录下即可,也就是说“./”路径等价于jar包所在目录;如果这个文件是以ClassPath下的文件这种方式载入的,比如在Spring中载入classpath:config.properties,则在MF文件的配置文件的ClassPath中添加“./”,然后将这个配置文件与jar包放在同一个目录即可,当然也可以在MF文件的配置文件的ClassPath中添加“./config/”,然后把配置文件都放在jar包相同目录下的config目录下。

Class-Path的注意事项

1.每行最多72个字符;

2.多个jar包用空格隔开;

3.如果需要换行,行首要有一个空格,行尾也要有一个空格(一般是这样,例外情况如第4点注意事项);

4.如果行尾没空格,则该行与下一行的内容是连接起来的,如例子2中lib/dom4j-1.6.1.jar被拆分到了2行里,lib/dom4j-1.6后面是没有空格的,与.1.jar是直接连在一起组成一个jar包的。

例子1:

Manifest-Version: 1.0
Class-Path:  lib/bsf.jar 
 lib/log4j.jar 
 lib/dom4j-1.6.1.jar 
 lib/jakarta-oro-2.0.8.jar 
 lib/jaxen-1.1-beta-6.jar 
 lib/javascriptplugin.ZIP 
 lib/js.jar 
 lib/sopapi.jar 
 lib/sopdes.jar 
 lib/jakarta-regexp-1.5.jar 
 lib/commons-net-1.4.1.jar 
 lib/commons-pool2-2.4.2.jar 
 lib/log4j-1.2.17.jar 

例子2:

Manifest-Version: 1.0
Class-Path:  lib/bsf.jar lib/log4j.jar lib/dom4j-1.6
 .1.jar lib/jakarta-oro-2.0.8.jar lib/jaxen-1.1-beta-6.jar lib/javascr
 iptplugin.ZIP lib/js.jar lib/sopapi.jar lib/sopdes.jar lib/jakarta-re
 gexp-1.5.jar lib/commons-net-1.4.1.jar

Java可执行jar的manifest编写

Eclipse:形式

选中项目右键

 

命令行形式 

1.编写Java类

2.命令行指定到项目/src文件夹,编译

3.编写manifest文件

4.目录重新定位到bin/classes编译文件目录下, 执行打包命令

Jar /? 看详细说明。

命令行执行 java -jar xxx.jar时 , 通过-cp或者-classpath指定lib文件夹都无效, 需要这样:

java -Djava.ext.dirs=./lib/ -jar xxxx.jar

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java Lambda List转Map代码实例

    Java Lambda List转Map代码实例

    这篇文章主要介绍了Java Lambda List转Map代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Dubbo配置http协议全过程

    Dubbo配置http协议全过程

    文章介绍了在服务提供者和服务消费者中,分别通过添加依赖包和配置文件,实现基于HTTP协议的服务接口注册及调用,无需修改消费者启动类,服务调用方式与Dubbo协议类似
    2025-10-10
  • ByteArrayOutputStream与InputStream互相转换方式

    ByteArrayOutputStream与InputStream互相转换方式

    这篇文章主要介绍了ByteArrayOutputStream与InputStream互相转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Kafka简单客户端编程实例

    Kafka简单客户端编程实例

    这篇文章主要为大家详细介绍了Kafka简单客户端编程实例,利用Kafka的API进行客户端编程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • 浅谈 JDBC 元数据

    浅谈 JDBC 元数据

    这篇文章主要介绍了JDBC元数据的相关内容,涉及一些获取数据源各种信息的方法,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09
  • 识别率很高的java文字识别技术

    识别率很高的java文字识别技术

    这篇文章主要为大家详细介绍了识别率很高的java文字识别技术,亲测,希望对大家有帮助,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Java class文件格式之数据类型_动力节点Java学院整理

    Java class文件格式之数据类型_动力节点Java学院整理

    这篇文章主要介绍了Java class文件格式之数据类型的相关资料,需要的朋友可以参考下
    2017-06-06
  • 解决IDEA创建maven项目时pom.xml没有变蓝的问题

    解决IDEA创建maven项目时pom.xml没有变蓝的问题

    这篇文章主要介绍了解决IDEA创建maven项目时pom.xml没有变蓝的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • MyBatis自定义typeHandler的完整实例

    MyBatis自定义typeHandler的完整实例

    这篇文章主要给大家介绍了关于MyBatis自定义typeHandler的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MyBatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • java 并发编程之共享变量的实现方法

    java 并发编程之共享变量的实现方法

    这篇文章主要介绍了java 并发编程之共享变量的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09

最新评论