您的位置:首页 > 编程语言 > Java开发

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

2015-09-09 15:56 1001 查看
转:http://blog.sina.com.cn/s/blog_8af106960101c5xt.html

一、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里。





具体的几种情况:

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. ********************************************

若要将目标包放在当前项目的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

最后生成的包文件:





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包。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: