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.如 ...
随机推荐
- Zepto 使用中的一些注意点(转)
http://www.zeptojs.cn/ zepto英文站在线文档 http://www.css88.com/doc/zeptojs_api/ zepto中文站在线文档 htt ...
- 关于solaris中 crontab -e 出现数字0的解决办法
解决方法: 通过网络,发现要设置编辑器的环境变量 $ EDITOR=vi $ export EDITOR$ echo $EDITORvi$ crontab -e OK
- session的一些方法
session的一些方法: package com.stono.servlet.listenerorder; import java.io.IOException; import java.io.Pr ...
- js制作ppt阅读文档类型
前几天开发中,客户要求在页面中展示一个类似ppt文档的一个东西,用轮播展示,但是有缩略图,和展示的大图,本想找些插件来做,后来想想,自己试下吧.. 有些简陋,但是能用,毕竟一行一行写的,留下来当笔记用 ...
- Js获取复选框checkbox的值
var emps= $("input[name='emp']:checked"); var employee= ""; emps.each(function() ...
- HDU3652(数位dp)
A - B-number Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descri ...
- SuperSocket入门(五)-常用协议实现模版及FixedSizeReceiveFilter示例
Socket里面的协议解析是Socket通讯程序设计中最复杂的地方,如果你的应用层协议设计或实现不佳,Socket通讯中常见的粘包,分包就难以避免.SuperSocket内置了命令行 ...
- JAVA_file(2)
几种不太安全的: 1. new File(path),这个方法的路径到底在那里取决于调用java命令的起始位置定义在哪里, tomcat/bin下面的catalina.bat调用了java,所以在to ...
- 说说 bash 的 if 语句
说说 bash 的 if 语句 在开始先给大家列出几个术语,不做解释,不懂的可以参考其它资料. 术语和符号: 退出状态码 $? [...] (中括号,方括号) [[...]] (双中括号,双方括号) ...
- 百度云推送----iOS
前言 记录一下这几天学习的百度推送,觉得这个东西弄的还挺糟心的,好多注意的地方 正文 1.先申请一个百度开发者账号 http://push.baidu.com/fc 2.创建一个新应用,并应用配置 3 ...