Eclipse中Java项目打包——外部jar包位置 ,生成jar包位置,mf文件书写等问题

来源:互联网 发布:变形金刚倾天柱 乐乎 编辑:程序博客网 时间:2024/05/16 12:43

一、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包的绝对路径

 

 外部jar包相对project.jar的相对路径:就是manifest.mf中罗列的jar包的class-path。

 

 

====================================================================================

====================================================================================

三、具体的情况分析(manifest.mf书写

 

******待打包的项目****************

设有项目JWN,项目目录:需要的三个外部jar包在lib里。

Eclipse中Java项目打包——外部jar包位置 <wbr>,生成jar包位置,mf文件书写等问题

具体的几种情况:

1. ***************+*************************

若要将待打目标包放在当前项目的lib里,和外部jar同层,那么manifest.mf的内容应为:

Manifest-Version: 1.0 

Class-Path: commons-logging.jar junit-4.1.jar jwnl.jar

Main-Class: src.YourMainClassNam

 

最后生成的包文件:

Eclipse中Java项目打包——外部jar包位置 <wbr>,生成jar包位置,mf文件书写等问题


 

2.  ********************************************

 若要将目标包放在当前项目的lib外,在外部jar包外层,那么manifest.mf的内容应为:

Manifest-Version: 1.0 

Class-Path: lib\commons-logging.jar lib\junit-4.1.jar lib\jwnl.jar

Main-Class: src.YourMainClassNam

 

最后生成的包文件:

Eclipse中Java项目打包——外部jar包位置 <wbr>,生成jar包位置,mf文件书写等问题


 

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加载进来的目录如下:

Eclipse中Java项目打包——外部jar包位置 <wbr>,生成jar包位置,mf文件书写等问题

 

1.因为加载进来的前3jar包的位置是在JWN项目下lib中,第四个jar包位置也是在JWN项目中的,所以在运行的时候必须保证这4jar包在原始位置仍然存在。

 

2.如果将jar包复制到别的地方,然后加载这个复制后位置上的jar包,,会出现错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problems:

=============================================================================

=============================================================================


 

 

====================================================================================

====================================================================================

四、. 将jar包打在测试项目里*****************

 

一般项目会习惯把涉及的jar包放在自己的项目里,所以上述3种情况,测试项目使用的外部jar包还是在项目外,会不方便,所以可以在打包时就将jar包指定为测试项目下面。例如,

测试项目jwntest,lib里是引用的JWN.jar包所需的3个外部jar包。

Eclipse中Java项目打包——外部jar包位置 <wbr>,生成jar包位置,mf文件书写等问题
 *******************************************************

目标jar包在lib里的情况:manifest.mf的内容应为:

Manifest-Version: 1.0 

Class-Path: commons-logging.jar junit-4.1.jar jwnl.jar

Main-Class: src.YourMainClassName

Eclipse中Java项目打包——外部jar包位置 <wbr>,生成jar包位置,mf文件书写等问题

**************************************************

目标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

Eclipse中Java项目打包——外部jar包位置 <wbr>,生成jar包位置,mf文件书写等问题

====================================================================================

====================================================================================

五、一定要注意最后要加载生成的jar包。

0 0