可执行jar包的MANIFEST.MF

打包可执行jar包时,MANIFEST.MF总是个让人头疼的东西,经常出现这种那种问题。
一个例子:
================================================================================
Manifest-Version: 1.0
Main-Class: test.Main
Class-Path: ./ ./lib/commons-collections-3.2.jar ./lib/commons-dbcp-1.2.2.jar
  ./lib/commons-lang-2.3.jar ./lib/commons-logging-1.1.jar

================================================================================
各部分解释:
Manifest-Version MF文件版本号
Main-Class 包含main方法的类
Class-Path 执行这个jar包时的ClassPath

以下是需要注意的各个要点:
1. Manifest-Version、Main-Class和Class-Path后面跟着一个英文的冒号,冒号后面必须跟着一个空格,然后才是版本号、类和ClassPath。
2. Class-Path中的各项应使用空格分隔,不是逗号或分号。
3. Class-Path中如果有很多项,写成一行打包的时候会报错line too long,这时需要把Class-Path分多行写。注意:从第二行开始,必须以两个空格开头,三个以上我没试过,不过不用空格开头和一个空格开头都是不行的,我已经试过了。
4. Class-Path写完之后最后一定要有一个空行。
5. 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目录下。

我自己的一个
Manifest-Version: 1.0
Main-Class: view.MMIDesktop
SplashScreen-Image: EPM-300dpi_Large.jpg
Class-Path: .\lib\adfm.jar .\lib\adf-controller-security.jar
    .\lib\adf-share-base.jar .\lib\adf-share-ca.jar
  .\lib\adf-share-security.jar .\lib\adf-share-support.jar
   .\lib\adflogginghandler.jar .\lib\adfsharembean.jar
    .\lib\bc4jimdomains.jar .\lib\cache.jar
     .\lib\dvt-jclient.jar .\lib\dvt-utils.jar
      .\lib\forms-1.0.6.jar .\lib\identitystore.jar
       .\lib\javax.activation_1.1.0.0_1-1.jar
        .\lib\jmf.jar .\lib\ordhttp.jar
         .\lib\ordim.jar .\lib\xml.jar
          .\lib\xmlparserv2.jar .\lib\mdsrt.jar
           .\lib\javax.servlet_1.0.0.0_2-5.jar
            .\lib\javax.jsp_1.1.0.0_2-1.jar
             .\lib\dms.jar .\lib\ojdl-log4j.jar
              .\lib\ojdl2.jar .\lib\ojdl.jar
               .\lib\xmlef.jar .\lib\share.jar
                .\lib\jdev-rt.jar .\lib\dom4j-1.6.1.jar
                 .\lib\jxl-2.6.jar .\lib\jaxen-1.1-beta-6.jar
                  .\lib\ojdbc6.jar .\lib\groovy-all-1.6.3.jar
                   .\lib\gnujaxp.jar .\lib\jcommon-1.0.16.jar
                    .\lib\jfreechart-1.0.13.jar
                     .\lib\ws\axiom-api-1.2.8.jar
                      .\lib\ws\axiom-dom-1.2.8.jar
                       .\lib\ws\axiom-impl-1.2.8.jar
                        .\lib\ws\axis2-adb-1.5.1.jar
                         .\lib\ws\axis2-kernel-1.5.1.jar
                          .\lib\ws\axis2-transport-http-1.5.1.jar
                           .\lib\ws\axis2-transport-local-1.5.1.jar
                            .\lib\ws\commons-codec-1.3.jar
                             .\lib\ws\commons-httpclient-3.1.jar
                              .\lib\ws\commons-logging-1.1.1.jar
                               .\lib\ws\httpcore-4.0.jar
                                .\lib\ws\log4j-1.2.15.jar
                                 .\lib\ws\mail-1.4.jar
                                  .\lib\ws\neethi-2.0.4.jar
                                   .\lib\ws\wsdl4j-1.6.2.jar
                                    .\lib\ws\XmlSchema-1.4.3.jar
                                     .\lib\report\commons-beanutils-1.8.0.jar
                                      .\lib\report\commons-collections-2.1.1.jar
                                       .\lib\report\commons-digester-1.7.jar
                                        .\lib\report\iText-2.1.7.jar
                                         .\lib\report\jasperreports-Emerson.jar
                                          .\lib\report\poi-3.5-FINAL-20090928.jar                                

你可能感兴趣的:(spring)