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 版本均可用)
方案一对于含有较多第三方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