Eclipse打Jar包的方法

Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法

Eclipse打包成jar文件的两种方法

关于引用第三方jar包,生成自己jar包运行时找不到第三方jar包的解决方案 

一,不包含其他额外的Jar包(我这里没指定默认运行主类,可以指定)

1. Eclipse项目打成Jar包

右键该项目名称,选择Export,之后选择Java中的JAR file,之后点击next,之后在JAR file中填入JAR包名称,点击finish即可。生成的jar包在workspace中。

2. 运行JAR包中指定的main方法

比如我的main方法在com/xx/javaproject/test,名字是HelloWorld。 jar包名称是TestJavaProject.jar

就可以执行如下命令:

java -cp TestJavaProject.jar com.xx.javaproject.HelloWorld start

3. 也可以在TestJavaProject.jar相同目录下创建.sh或者.bat文件执行

 在linux,创建脚本文件执行,创建TestJavaProject.sh,添加如下内容

1 #!/bin/bash
2 java -cp TestJavaProject.jar com.xx.javaproject.HelloWorld start 

然后在命令行输入:

1 ./TestJavaProject.sh  或者  sh TestJavaProject.sh  或者 bash TestJavaProject.sh

 在windows,创建批处理文件执行,创建TestJavaProject.bat,添加如下内容

1 java -cp TestJavaProject.jar com.xx.javaproject.HelloWorld start 

 

二、包含其他额外的Jar包(指定默认运行主类)

eclipse创建项目,如何引入额外Jar包? 

创建Java Project之后,右键项目名,选择 new folder,创建一个lib;之后把需要的各类Jar包拷贝到lib目录下;然后右键项目,选择Build Path--》Configure Build Path--》Libraries,选择Add JARS,之后选择该项目lib下的所有Jar包,确定即可。

 

 方案一:用Eclipse自带的Export功能,用JAR file方式(一)

1. 准备主清单文件 “MANIFEST.MF”

由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下:

1 Manifest-Version: 1.0
2 Class-Path: lib/commons-beanutils-1.8.0.jar lib/commons-beanutils-1.8.0.jar lib/commons-lang-2.4.jar lib/commons-logging-1.1.3.jar lib/ezmorph-1.0.6.jar lib/json-lib-2.3-jdk15.jar lib/mysql-connector-java-5.1.27.jar
3 Main-Class: com.zc.mysql2json.trans.test.TestEvents

第一行是MAINIFEST的版本,第二行Class-Path就指定了外来jar包的位置,第三行指定我们要执行的MAIN java文件。

这里要注意几点:

1、Class-Path: 和Main-Class: 后边都有一个空格,必须加上,否则会打包失败,错误提示为:Invalid header field;

2、假设我们的项目打包后为TestMysql2Json.jar,那么按照上面的定义,应该在 TestMysql2Json.jar的同层目录下建立一个lib文件夹(即lib文件和打包的jar文件
在同一个目录下),并将相关的jar包放在里面。否则将会出现“Exception in thread "main" java.lang.NoClassDefFoundError”的错误;

3、Main-Class后面是类的全地址,比如你的主文件是TestEvents.java,文件里打包为package com.zc.mysql2json.trans.test; 那么这里就写com.zc.mysql2json.trans.test.TestEvents,
不要加.java后缀,主文件地址写错将会出现“找不到或无法加载主类”的错误;

4、写完Main-Class后一定要回车(即最后一行是空白行),让光标到下一行,这样你生成的jar包才能找到你的主class去运行,

否则将会出现“jar中没有主清单属性”的错误。

步骤2:右击Java工程选择Export—>选择JAR file—>Next

 

步骤3:选择要打包的文件,不需要的文件不必打包,减小打包后的jar文件大小,并进行选项配置如下

这里有几个选项:

1 * Export generated class files and resources 表示只导出生成的.class文件和其他资源文件
2 * Export all output folders for checked projects 表示导出选中项目的所有文件夹
3 * Export java source file and resouces 表示导出的jar包中将包含你的源代码*.java,如果你不想泄漏源代码,那么就不要选这项了
4 * Export refactorings for checked projects 把一些重构的信息文件也包含进去

步骤4:选择我们配置文件路径, 选择我们在第一步中自定义的配置文件路径,这一步很重要,不能采用默认选项

这里解释一下配置项:

* Generate the manifest file:是系统帮我们自动生成MANIFEST.MF文件,如果你的项目没有引用其他class-path,那可以选择这一项。
* Use existing mainfest from workspace:这是可以选择我们自定义的.MF文件,格式如上所写,引用了第三方包时选用。
* Seal content:要封装整个jar或者指定的包packet。
* Main class:这里可以选择你的程序入口,将来打包出来的jar就是你这个入口类的执行结果。

最后Finish,即生成了我们要的jar文件。

在命令行运行如下命令

1 java -jar TestMysql2Json.jar 或者 java -cp TestMysql2Json.jar com.zc.mysql2json.trans.test.TestEvents start (指定含main的类执行)

或者也可以在 TestMysql2Json.jar 相同目录下创建.sh或者.bat文件执行

 在linux,创建脚本文件执行,创建TestMysql2Json.sh,添加如下内容

1 #!/bin/bash
2 java -jar TestMysql2Json.jar
3 #或者指定类运行
4 #java -cp TestMysql2Json.jar com.zc.mysql2json.trans.test.TestEvents start

然后在命令行输入:

1 ./TestMysql2Json.sh  或者  sh TestMysql2Json.sh  或者 bash TestMysql2Json.sh

 在windows,创建批处理文件执行,创建TestJavaProject.bat,添加如下内容:

1 java -jar TestMysql2Json.jar
2 #或者指定类执行
3 #java -cp TestMysql2Json.jar com.zc.mysql2json.trans.test.TestEvents start

 

方案二:用Eclipse自带的Export功能,用Runnable JAR file方式(二)   ( 【图文】Eclipse导出jar包过程【jar file与runnable jar file区别】

1. 点击项目,右击选择Export,接着选择Runnable JAR file,接着点击next;

2. 在Launch configuration中选择要打包的主类(mian方法),如果没有,先运行一下该主类,就会显示出来; 接着在Export Destination中选择保存Jar包的位置以及名称;最后选择Library handling

1 library handling中,(自己这三种都试一下)
2 第一个为提取extract需要的依赖的库或jar合成到jar文件里; 
(把自己的项目class以及lib中jar包中的class,混合在一起);
其它项目中直接引用该jar包,不需要加入它所需的额外jar包,就可以执行我们的类(但可能和项目引入的额外jar包引起jar包冲突);命令行也可以直接运行 java -jar XXX.jar
3 第二个则仅仅打包依赖库到jar文件;
(把依赖的外部jar包,引入我们jar文件中)
其它项目中直接引用该jar包,但需要加入它所需的额外jar包,才可以执行我们的类,造成jar包重复;命令行也可以直接运行 java -jar XXX.jar
4 第三个则把依赖库放到一个文件夹中。
(没有外部依赖的jar包,只有自己的类)
其它项目中直接引用该jar包,需要加入它所需的额外jar包,就可以执行我们的类;命令行也需要引入依赖jar包,才能运行 java -jar XXX.jar

 生成好相应Jar包

在命令行运行如下命令

1 java -jar TestMysql2Json_run.jar

或者也可以在 TestMysql2Json.jar 相同目录下创建.sh或者.bat文件执行

 在linux,创建脚本文件执行,创建TestMysql2Json.sh,添加如下内容

1 #!/bin/bash
2 java -jar TestMysql2Json_run.jar

然后在命令行输入:

1 ./TestMysql2Json.sh  或者  sh TestMysql2Json.sh  或者 bash TestMysql2Json.sh

 在windows,创建批处理文件执行,创建TestJavaProject.bat,添加如下内容:

1 java -jar TestMysql2Json.jar

 

方案三:安装Eclipse打包插件Fat Jar 

( fatjar eclipse4.4 java项目的jar包一起打包 net.sf.fjep.fatjar_0.0.32.jar  Eclipse高版本无法兼容FatJar的问题解决    Eclipse4.X版本安装fatjar插件(luna mars 版本均可用) 

    eclipse高版本4.5安装Fat Jar  )

方案一对于含有较多第三方jar文件或含有第三方图片资源等就显得不合适,太繁琐。这时可以使用一个打包的插件—Fat Jar。
Fat Jar Eclipse Plug-In是一个可以将Eclipse Java Project的所有资源打包进一个可执行jar文件的小工具,可以方便的完成各种打包任务,我们经常会来打jar包,但是eclipse自带的打包jar似乎不太够用,Fat Jar是eclipse的一个插件,特别是Fat Jar可以打成可执行Jar包,并且在图片等其他资源、引用外包方面使用起来更方便。

安装方法:

1. Eclipse在线更新方法 ( 安装失败提示:  )
Help > Install New Software > Add,
name:Fat Jar
location:http://kurucz-grafika.de/fatjar

2. Eclipse插件手动安装方法 ( 重启没有该插件,因为目前fatjar版本只支持eclipse 3.4前 )

所以下载net.sf.fjep.fatjar_0.0.32.jar,能支持更高版本的eclipse4.4及更高  https://files.cnblogs.com/files/milanmi/net.sf.fjep.fatjar_0.0.32.jar.zip

最新版下载地址:https://sourceforge.net/projects/fjep/
下载地址:http://downloads.sourceforge.net/fjep/net.sf.fjep.fatjar_0.0.27.zip?modtime=1195824818&big_mirror=0
将解压出的plugins中的文件复制到eclipse安装目录中的plugins目录下,然后重启eclipse即可。

打开Eclipse之后,右击要打包的工程,出现一个“Build Fat Jar”,点击它。如果没有出现它,可以选择“Export”,从弹出的对话框中选择“other”-->"Fat Jar Exporter",点击Next,选择要打包的项目,再点击Next。

 参考  fatjar eclipse4.4 java项目的jar包一起打包 net.sf.fjep.fatjar_0.0.32.jar     Eclipse中打包插件Fat Jar的安装与使用  

使用方法:

步骤1:右击工程项目选择Buile Fat Jar  (图不太符合我的项目,我的项目是 TestMysql2Json)

 

步骤2:配置jar文件存放目录,主Main文件等,如下图 (默认是在项目下。可以选择自己配置路径,点击use extern Jar-Name)

步骤3:选择所要用到的第三方jar包

步骤4:最后Finish,即生成了我们要的jar文件,十分方便。

步骤5:在命令行运行如下命令

1 java -jar TestMysql2Json_fat.jar  或者 java -cp TestMysql2Json_fat.jar com.zc.mysql2json.trans.test.TestEvents start (指定类执行)

或者也可以在 TestMysql2Json_fat.jar 相同目录下创建.sh或者.bat文件执行

 在linux,创建脚本文件执行,创建TestMysql2Json_fat.sh,添加如下内容

1 #!/bin/bash
2 java -jar TestMysql2Json_fat.jar
3 # 指定类执行
4 #java -cp TestMysql2Json_fat.jar com.zc.mysql2json.trans.test.TestEvents start

然后在命令行输入:

1 ./TestMysql2Json_fat.sh  或者  sh TestMysql2Json_fat.sh  或者 bash TestMysql2Json_fat.sh

 在windows,创建批处理文件执行,创建TestJavaProject.bat,添加如下内容:

1 java -jar TestMysql2Json_fat.jar
2 #指定类执行
3 #java -cp TestMysql2Json_fat.jar com.zc.mysql2json.trans.test.TestEvents start

 

posted @ 2018-08-18 19:25  秦时明月0515  阅读(26414)  评论(1编辑  收藏  举报