一、manifest.mf文件
1. ***************
有外部jar包时,需要manifest.mf文件来指明,manifest.mf文件可以放在任何的位置。
2. ***************
jar包生成后,manifest.mf文件可以删除。
====================================================================================
====================================================================================
二、生成的目标jar包与外部jar包的路径关系
在Eclipse中将Java项目打包为Jar,中讲到“假设我们的项目打包后为project.jar,那么按照上面的定义,应该在project.jar的同层目录下建立一个lib文件夹,并将相关的jar包放在里面。否则将会出现Exception in thread "main" java.lang.NoClassDefFoundError的错误。”.
本质意义即:以project.jar所在文件夹的绝对路径+外部jar包相对project.jar的相对路径=外部jar包的绝对路径;
====================================================================================
====================================================================================
三、具体的情况分析(manifest.mf书写)
******待打包的项目****************
设有项目JWN,项目目录:需要的三个外部jar包在lib里。
具体的几种情况:
1. ***************+*************************
若要将待打目标包放在当前项目的lib里,和外部jar包同层,那么manifest.mf的内容应为:
Manifest-Version: 1.0
Class-Path: commons-logging.jar junit-4.1.jar jwnl.jar
Main-Class: src.YourMainClassNam
最后生成的包文件:
2.
Manifest-Version: 1.0
Class-Path: lib\commons-logging.jar lib\junit-4.1.jar lib\jwnl.jar
Main-Class: src.YourMainClassNam
最后生成的包文件:
3. *************************************************
在Eclipse中将Java项目打包为Jar中生成的jar包是在项目外的,那么manifest.mf的内容应为:
Manifest-Version: 1.0
Class-Path: JWN\lib\commons-logging.jar JWN\lib\junit-4.1.jar JWN\lib\jwnl.jar
Main-Class: src.YourMainClassNam
******使用打好的项目包****************
=============================================================================
=============================================================================
测试jar包的项目jwnTest将生成的JWN.jar加载进来的目录如下:
1.因为加载进来的前3个jar包的位置是在JWN项目下lib中,第四个jar包位置也是在JWN项目中的,所以在运行的时候必须保证这4个jar包在原始位置仍然存在。
2.如果将jar包复制到别的地方,然后加载这个复制后位置上的jar包,,会出现错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
=============================================================================
=============================================================================
====================================================================================
====================================================================================
四、. 将jar包打在测试项目里*****************
一般项目会习惯把涉及的jar包放在自己的项目里,所以上述3种情况,测试项目使用的外部jar包还是在项目外,会不方便,所以可以在打包时就将jar包指定为测试项目下面。例如,
测试项目jwntest,lib里是引用的JWN.jar包所需的3个外部jar包。
目标jar包在lib里的情况:manifest.mf的内容应为:
Manifest-Version: 1.0
Class-Path: commons-logging.jar junit-4.1.jar jwnl.jar
Main-Class: src.YourMainClassName
**************************************************
目标jar包与lib同层情况:manifest.mf的内容应为:
Manifest-Version: 1.0
Class-Path: lib\commons-logging.jar lib\junit-4.1.jar lib\jwnl.jar
Main-Class: src.YourMainClassName
====================================================================================
====================================================================================
五、一定要注意最后要加载生成的jar包。