Java打包文件(jar文件)中通常会包含清单文件(META-INF/MANIFEST.MF),该文件可以包含主类以及加载类路径等信息。
该文件有着严格的格式要求,甚至一个空格都会引起错误。
MANIFEST.MF格式特别需要注意以下几点:
1. 文件中的内容以键值对的形式出现,键值对之间采用"冒号+空格"进行分隔(注意:冒号后的空格必须有,否则格式有错误)
2. 文件每行最多72个字符,可以分多行写。调用多个jar时,可以把调用的jar的路径写到一行,每个用空格隔开。当调用的jar比较多时,写在一行就比较多,而且看起来也不方便,所以更多时候是一行写一个jar,但是要注意,每行开头要至少一个空格。
3. 文件的最后必须要空两行,并且这两行都必须顶格。
exp:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: kanlianhui
Build-Jdk: 1.7.0_67
Class-Path: log4j-1.2.17.jar slf4j-api-1.7.12.jar slf4j-log4j12-1.7.12
.jar jodd-core-3.6.5.jar
Main-Class: com.forg.Main
使用这个MANIFEST.MF生成的jar,就可以使用java -jar xxx.jar直接调用执行了。
【补充:】
maven中生成的jar会带有默认的manifest.mf文件。可以用maven-jar-plugin指定。
exp:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>
src/main/res/META-INF/MANIFEST.MF
</manifestFile>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>