Eclipse打JAR包的使用
编译Java代码你当然可以直接使用Javac,但对于大多同学还是使用Eclipse编辑器来得快捷。这篇文章来说说我使用Eclipse编译后的执行之路,走路许多弯路,看我一一道来。
演示系统的架构
首先看看我的目录结构:
这个演示代码非常简单,结构也非常清晰,不能用于任何生产,只是为了演示而已。大致思路是:HelloJar项目为UserJar提供类库工具,HelloJar的Hello类只有一个方法:
package net.oseye;
public class Hello {
public String say(String name){
return "Hello,"+name;
}
}
而UserJar的RunMain类是程序入口,调用HelloJar的函数,代码如下:
package net.oseye;
import net.oseye.Hello;
public class RunMain {
public static void main(String[] args) {
System.out.println(new Hello().say("oseye"));
}
}
整个架构就是如此,下面我们先来到处类库HelloJar吧。
使用Eclipse到处Jar包
- 在HelloJar项目上右键菜单,选择“Export...”;
- 在弹出的Export对话框选择JAR File选项,如:

这里为什么选择JAR file而不是Runnable JAR file,稍后再说。 - 点击Next,选择项目和导出JAR的目录

一路Next或直接Finish,完成。如果不出差错,这就成功导出了JAR包。
引用第三方JAR包
由于UserJar使用了HelloJar.jar,现在我们展示下如何引用第三方JAR包的。
在UserJar项目右键选择"Properties",打开对话框,点击“Add External JARs”按钮选择要引用的JAR包即可。
直接执行程序
在DOS命令行进入UserJar的bin目录执行,报了如下异常:
这是因为引用了第三方的JAR包,需要设置classpath才能执行成功:
java -cp .;d:\jar\HelloJar.jar net.oseye.RunMain
如果引用很多第三方JAR岂不是很麻烦。于是我想把UserJar打成一个JAR包执行。
执行JAR包
最开始在网上搜到可以使用fatjar插件,可以把项目包括第三方JAR打成一个包。于是安装了fatjar,使用也非常方便。
- 在UserJar项目上右键选择"Build Fat Jar";
- 在对话框设置如下:

- Next,选择需要打成一个包的第三方JAR包,Finish即可。
- 执行JAR包:
java -jar UserJar_fat.jar
结果:

- 哈哈,这样是不是更方便。其实解压UserJar_fat.jar你就能看到HelloJar.jar:

使用Eclipse打Runnable JAR file包
上文说到为什么选择JAR file而不是Runnable JAR file,这里就简单说下两者的区别。前者是只把项目打包,不包括第三方JAR,而后者可以,就像使用FatJar插件一样。
- 先在UserJar右键"Run As" > "Java Application"(这需要有Main Class才行),否则下面的步骤走不通的;
- 在UserJar项目右键,如第一张图,选择选择“Runnable JAR file”;
- 点击Next,进入Export对话框:

一定要经过第一步的Run,否则你的“Lanuch configuration”是空的。点击Finish完成即可。 - 对Library handling的三个选项稍作说明:
- Extract required libraries into generated JAR:只把第三方JAR包需要的class提取来和项目一起打包

- package equired libraries into generated JAR:和fatjar差不多,是把第三方的JAR一起打包,只是和FatJar的目录不太一样,FatJar是放在lib文件夹下,而它是放在根目录了

- 第三个选项是把第三方的JAR包拷贝到另一个子目录里,而使用MANIFEST来设置

其中MANIFEST内容如下:Manifest-Version: 1.0
Class-Path: . UserJar_lib/HelloJar.jar
Main-Class: net.oseye.RunMain
- Extract required libraries into generated JAR:只把第三方JAR包需要的class提取来和项目一起打包
总结:类库一般打包成JAR file,而可执行程序就没必要使用FatJar插件了,使用Eclipse自带的也蛮好的。
Eclipse打JAR包的使用的更多相关文章
- Eclipse导出jar包Unity打包错误
前几天接SDK使用的是Android Studio昨天打开AndroidStudio后自动更新了gradler然后失败了然后AndroidStudio就挂了.就是用之前的方法Eclipse到处jar包 ...
- Eclipse生成Jar包方法
Eclipse生成jar包 第一:普通类导出jar包,我说的普通类就是指此类包含main方法,并且没有用到别的jar包. 1.在eclipse中选择你要导出的类或者package,右击,选择Exp ...
- eclipse打Jar包问题
1.首先,如果你的Java项目中没有任何第三方包,是十分容易的,只需要通过eclipse的Export就可以按操作一步步运行,如下: 选择你要导出的Java项目,右键选择Export,如下图,选择JA ...
- Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗?
Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗? org.eclipse.wst.jsdt.core_1.3.300.v201410221502\li ...
- Eclipse 生成jar包
Eclipse 生成jar包 打开 Jar 文件向导 Jar 文件向导可用于将项目导出为可运行的 jar 包. 打开向导的步骤为: 在 Package Explorer 中选择你要导出的项目内容.如果 ...
- eclipse中jar包打断点
eclipse中jar包打断点 1. 下载工具 链接:http://pan.baidu.com/s/1dEF5tqL 密码:md4m 2. 增加jadeclipse功能 把 net.sf.jadcli ...
- eclipse导出jar包的方法
第一:导出基本项目的jar包(此项目没有引用过第三方jar包) 1.在eclipse中选择你要导出的项目或package或类,右击,选择Export子选项: 2.在弹出的对话框中,选择java文件-- ...
- 【转】Eclipse打JAR包,插件FatJar安装与使用
原文地址:http://blog.csdn.net/jikeyzhang/article/details/4731968 下载RUL: 下载fatJar插件,解压缩后是一个.../plugins/(n ...
- java eclipse打jar包和执行jar中的main函数
jar包使用eclipse打包步骤 右键需要打包的项目->选择Export 到这里有两种打包的方式 1.如果项目中没有使用其他第三方包等,则直接选择下图中的第一种即可(JAR file) 2.如 ...
随机推荐
- CNTV视频回看下载地址
这其实不是新方法了,这个方法早在五六年前大家就在用,至今也没失效.但是五六年前那时候这个方法可以下载到过去三个月内CNTV直播过的视频,而现在只能下到一个星期的.之所以要下载回看版本,是因为比栏目版本 ...
- jQuery 的 ready 函数是如何工作的?(源码分析)
如果你使用过 jQuery , 就必然使用过 ready 函数,它用来注册当页面准备好之后可以执行的函数. 问题来啦,我们的页面什么时候准备好了呢? 1. onload 事件 最基本的处理方式就是页面 ...
- javascript的字符串操作
一,把字符串的首字母大写返回一个新的字符串 1.1简单写法,把一个单词的首字母大写 String.prototype.firstUpperCase = function(){ return this[ ...
- android 类似QQ底部输入框弹出键盘和面板冲突 布局闪动处理方案(转)
先看下效果 差不多就是解决这种冲突,布局闪动的 作者的githup :https://github.com/Jacksgong/JKeyboardPanelSwitch Android键盘面板冲突 布 ...
- Boost.Asio技术文档
Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENSE_1_ ...
- .md即markdown文件的基本常用编写语法(图文并茂)
序言: 很久没有写博客了,感觉只要是不写博客,人就很变得很懒,学的知识点感觉还是记不住,渐渐地让我明白,看的越多,懂的越少(你这话不是有毛病吗?应该是看的越多,懂的越多才对),此话怎讲,当你在茫茫的前 ...
- 基于MAC OS 操作系统安装、配置mysql
$ sudo mv mysql-5.1.45-osx10.6-x86_64 /usr/local/mysql$ cd /usr/local$ sudo chown -R mysql:mysql mys ...
- 字符集编码与Python(一)编码历史
编码历史 ASCII ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于 ...
- Mac系统安装Aircrack-ng破解wifi密码(2)
我们上一篇文章说过如何通过Aircrack-ng, 破解使用WPA/PSK加密方式的路由密码, 这一篇介绍的是使用Aircrack-ng破解使用WEP加密方式的路由密码: WEP和WPA/PSK的区别 ...
- java_db2错误码对应值
DB2-SQLSTATE消息 2012-08-27 10:35:27| 分类: db2|举报|字号 订阅 本节列示 SQLSTATE 及其含义.SQLSTATE 是按类代码进行分组的:对于子 ...