关于Eclipse将Java APP项目打包成jar的几种方法以及插件

时间:2022-12-18 09:56:43

推荐做法:

装一个fatjar插件,非常方便,而且打出来的jar包可以运行,包括引用外部的jar包以及其他文件,都能够很方便的引用到jar包里。

装好插件后,点击右键,export,应该在other中,选择fat jar exporter,然后自己慢慢看好一些选项就行了。

 

第二种方法:(本人试了很多次,打成的jar包可以运行,但是当jar变换到别的目录以后,有会提示缺少相关jar包,不推荐做法)

java项目打jar包分为2种情况:

一、java项目没有导入第三方jar包

这时候打包就比较简单:

1. 首先在Eclipse中打开项目, 右键点击项目,选择“Export”;
2. 选择Java/JAR file,Next;
3. Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文件夹就无需放进去了,免得增大空间;
这里有几个选项:
    * Export generated class files and resources 表示只导出生成的.class文件和其他资源文件
    * Export all output folders for checked projects 表示导出选中项目的所有文件夹
    * Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了
    * Export refactorings for checked projects 把一些重构的信息文件也包含进去
在Select the export destination中选择导出的jar的路径,Next
4. 下一页可以选择是否导出那些含有警告warning或者错误errors的*.class文件。一般不用理他,Next
5. 下一个页面里可以对项目做一些配置。(如果项目没有引入第三方jar包,这项我们采用系统默认的选项就OK,Main class一定要设置成为你项目的那个主方法入口类)
    * Generate the manifest file是系统帮我们自动生成MANIFEST.MF文件,如果你的项目没有引用其他class-path,那可以选择这一项。
    * Use existing mainfest from workspace。这是可以选择我们自定义的.MF文件,格式如上所写。
    * Seal content。要封装整个jar或者指定的包packet
    * Main class。这里可以选择你的程序入口,将来打包出来的jar就是你这个入口类的执行结果。
最后Finish,搞定。 ......

 

二、java项目有导入第三方Jar包(例如项目中有导入sqlserver2005.jar包)

这时候打包就相对复杂一点:

前面的4步和上面的情况是一样,只是第5步需要选择Use existing mainfest from workspace选项,并选择你自己创建的一个MANIFEST.MF文件,因为系统默认选择的是Generate the manifest file选项,而该选项不会将项目用到得第三方jar包打入到java项目生成的jar包中去。

自定义配置文件MANIFEST.MF :

首先在项目的根目录下创建一个MANIFEST.MF文件

接下来用记事本打开该文件,并编辑:

例如:
Manifest-Version: 1.0
Main-Class: StudentManager_Test
Class-Path: sqlserver2005.jar
其中的Manifest-Version是指程序的版本号,Main-Class是指程序的主方法入口类,slass-Path就指定了外来jar包的位置。请注意假设我们的项目打包后为project.jar,那么按照上面的定义,应该在 project.jar的同层目录下有相关的jar包(即sqlserver2005.jar,如果有引入多个第三方jar包,则可以用空格隔开)放在里面。否则将会出现Exception in thread "main" java.lang.NoClassDefFoundError的错误。

 

有几点需要注意的地方:

1:配置文件中的最后必须换行。

Manifest-Version: 1.0
Main-Class: src.guanyy.TimeTaskCreateData
Class-Path: sqlserver2005.jar

 

2:Main-Class:中的main函数可以带包:例如:

Main-Class:(一个空格)src.guanyy.TimeTaskCreateData

中间空格不要忘记

3:Class-Path中的写法如下:

Class-Path:(一个空格)lib\mysql-connector-java-5.1.18-bin.jar(一个空格)其他jar包

Class-Path: lib\mysql-connector-java-5.1.18-bin.jar lib\..