[转自] http://www.oseye.net/user/kevin/blog/227

编译Java代码你当然可以直接使用Javac,但对于大多同学还是使用Eclipse编辑器来得快捷。这篇文章来说说我使用Eclipse编译后的执行之路,走路许多弯路,看我一一道来。

演示系统的架构

首先看看我的目录结构:

这个演示代码非常简单,结构也非常清晰,不能用于任何生产,只是为了演示而已。大致思路是:HelloJar项目为UserJar提供类库工具,HelloJar的Hello类只有一个方法:

  1. package net.oseye;
  2. public class Hello {
  3. public String say(String name){
  4. return "Hello,"+name;
  5. }
  6. }

而UserJar的RunMain类是程序入口,调用HelloJar的函数,代码如下:

  1. package net.oseye;
  2.  
  3. import net.oseye.Hello;
  4.  
  5. public class RunMain {
  6.  
  7. public static void main(String[] args) {
  8. System.out.println(new Hello().say("oseye"));
  9. }
  10. }

整个架构就是如此,下面我们先来到处类库HelloJar吧。


使用Eclipse到处Jar包

  1. 在HelloJar项目上右键菜单,选择“Export...”;
  2. 在弹出的Export对话框选择JAR File选项,如:

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

    一路Next或直接Finish,完成。如果不出差错,这就成功导出了JAR包。

引用第三方JAR包

由于UserJar使用了HelloJar.jar,现在我们展示下如何引用第三方JAR包的。

在UserJar项目右键选择"Properties",打开对话框,点击“Add External JARs”按钮选择要引用的JAR包即可。

直接执行程序

在DOS命令行进入UserJar的bin目录执行,报了如下异常:

这是因为引用了第三方的JAR包,需要设置classpath才能执行成功:

  1. java -cp .;d:\jar\HelloJar.jar net.oseye.RunMain

如果引用很多第三方JAR岂不是很麻烦。于是我想把UserJar打成一个JAR包执行。

执行JAR包

最开始在网上搜到可以使用fatjar插件,可以把项目包括第三方JAR打成一个包。于是安装了fatjar,使用也非常方便。

  1. 在UserJar项目上右键选择"Build Fat Jar";
  2. 在对话框设置如下:
  3. Next,选择需要打成一个包的第三方JAR包,Finish即可。
  4. 执行JAR包:
    1. java -jar UserJar_fat.jar

    结果:

  5. 哈哈,这样是不是更方便。其实解压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内容如下:

        1. Manifest-Version: 1.0
        2. Class-Path: . UserJar_lib/HelloJar.jar
        3. Main-Class: net.oseye.RunMain

总结:类库一般打包成JAR file,而可执行程序就没必要使用FatJar插件了,使用Eclipse自带的也蛮好的。

转载于:https://www.cnblogs.com/pekkle/p/6568771.html

Eclipse打JAR包的使用相关推荐

  1. eclipse导入jar包_在命令行上操作JAR,WAR和EAR

    eclipse导入jar包 尽管Java IDE和许多图形工具使查看和操作Java归档文件(JAR,WAR和EAR)文件的内容比以往更加容易,但有时我还是更喜欢使用命令行jar命令来完成这些任务. 当 ...

  2. Eclipse打JAR包引用的第三方JAR包找不到 问题解决

    在做项目过程中,使用Eclipse打成JAR包,使用 Export-->Java-->JAR file ,我的jar包里面还引用了第三方的jar包:比如 log4j, 我也碰到了这样的问题 ...

  3. eclipse导入jar包的三种方法

    我们在用Eclipse开发程序的时候,经常要用到第三方jar包.引入jar包不是一个小问题,由于jar包位置不清楚,而浪费时间.下面配图说明3种Eclipse引入jar包的方式.   1.最常用的普通 ...

  4. Eclipse导入jar包并查看源代码

    Eclipse导入jar包查看源代码 在eclipse中新建工程,如图wordcount 在wordcount新建以个文件夹命名为lib,在工程上右键new->folder 将jar包复制到li ...

  5. eclipse打的jar包无法执行,报错could not find main class

    这几天做了个小程序,并用eclipse打成jar包打算在电脑上运行,结果双击打开jar时提示could not find main class等错误信息,居然提示没找到入口主函数,我了个去,然后就在网 ...

  6. Eclipse打JAR包,插件FatJar安装与使用

    from:http://blog.csdn.net/jikeyzhang/article/details/4731968 下载RUL:  下载fatJar插件,解压缩后是一个.../plugins/( ...

  7. Eclipse下把jar包放到工程lib下和通过buildpath加载有什么不同(解决找不到类的中级方法)...

    我通过Eclipse的 User Libranry 将jar导入 Eclipse里面,编译没有问题,运行的时候就报class文件没有定义,后来上网上查了下,原因找到啦,是这样的: 用Java Buil ...

  8. java使用eclipse打jar包_Eclipse对Java项目打Jar包

    在本Java项目中,如下图一所示,Java项目含有外部依赖Jar包 -- fastjson-1.2.29.jar  包. 在经历了多次的失败后,最后我终于使用 Eclipse 对 "Java ...

  9. eclipse java jar源码,eclipse查看Jar包源码

    这几天想研究一下hibernate等流行开源框架的源码,于是了解了一下如何在eclipse中查看导入的jar包的源码. 我们在开发或学习过程中,有时总避免不了查看jar包的源码.当我们按Ctrl+点击 ...

最新文章

  1. 《深入理解计算机系统》第七章读书笔记
  2. caffe安装,编译(包括CUDA和cuDNN的安装),并训练,测试自己的数据(caffe使用教程)
  3. ui uview 安卓开发_uni-app UI框架之uview-ui使用教程
  4. c++直角坐标系与极坐标系的转换_一篇阅读量高达2百6十多万的关于坐标系和投影的相关知识探讨...
  5. 使用Unoconv和LibreOffice进行格式转换实现在线预览 doc,doxc,xls,xlsx,ppt,pptx 文件
  6. 电脑突然无法播放html音频,电脑无法播放音频怎么办
  7. linux镜像默认的安装位置,Linux下正确修改Docker镜像和容器的默认存储位置,亲测有效...
  8. SecureCRT 6.7.0.153 汉化绿色版
  9. 如何解决sqlserver 2005 备份的时候无法选择除系统盘外的其他盘符?
  10. UnityShader13:渐变与遮罩
  11. 简单ajax跨域请求
  12. mysql80连接不上本地服务器_干货教程:如何在服务器上安装Mysql8.0
  13. node.js 与 nvm安装教程
  14. R 学习笔记《十一》 R语言初学者指南--图形工具(续)
  15. 坐标系ICRS与ITRS相互转换,时间系统及转换
  16. 牛客编程语言练习赛第三场(C++)
  17. CTF比赛工具自收集
  18. PhotoSwipe.js 相册展示插件学习
  19. Android RxJava与Retrofit与RecyclerView与Fresco结合网络请求
  20. Python基础知识点梳理

热门文章

  1. .NET中统一的存储过程调用方法(收藏)
  2. Java面向对象基础学习笔记(构造、重载、继承、多态、抽象类、接口、模块)
  3. 如何查看linux的版本?
  4. 14-求两个日期之间的天数
  5. java中static作用详解(版本二)
  6. 订单生产计划表范本_服装生产管理必看丨一文解决车间管理混乱
  7. cmake安装更新(解决cmake报错:CMake 3.8 or higher is required. You are running version 3.5.1
  8. Ubuntu远程服务器创建新用户并赋予权限
  9. Cover Protocol更新赔偿计划 新增三个新COVER代币获赔方
  10. 风控扫盲:巴塞尔下的分池与量化风控岗