我们在eclipse中打包一个可运行的jar包的时候,Library handing中的选项有下面三种:

那么eclipse中Runnable JAR file的这三种打包方式有什么区别呢?

第一个Extract required libraries into generated JAR意思是将依赖的jar解压出来变成class丢进你生成的jar里面;
第二个Package required libraries into generated JAR意思是将依赖的jar不解压,直接放进你生成的jar里面;
第三个Copy required libraries into a sub-folder next to the generated JAR意思是将依赖的jar放到你生成jar的同级目录下的”xxx_lib”文件夹里面。
下面通过一个例子来说明,现在我这里有一个工程TestExport,这个Java工程的结构如下所示

现在Test这个类中,引用了一个我自己写的外部的jar包Command.jar。我们现在来使用上述三种方式来导出看看效果怎样

使用第一种方式导出(Extract required libraries into generated JAR)

导出Runable Jar file的方法

选择要导出的工程右键,选Export.

选择Java-->Runable JAR file-->Next

Launch configuration中选择程序的入口,也就是main方法所在的类。
Export destination中选择导出的位置,点击Browse...选出你要导出的位置即可。
然后在Library handing中选择Extract required libraries into generated JAR解压缩依赖包模式
点击Finish就可导出了

导出后找到该jar包用压缩工具打开

可以看到里面的内容

可以看到第一目录是我们工程的包目录,里面的内容如下。

第二个目录是配置文件目录,这目录是一定会有的不必管他。

第三目录是是解压依赖包Command.jar的到的,里面的内容如下。

使用第二种方式Runable JAR file

导出方法与前面的类似,不再说了。
这次选择以第二种方式导出,并且保存到另一个目录中,为了避免混乱。

接着还是,找到这个jar,然后用压缩工具打开。

打开结果如下

可以看到这种方式,是吧外部依赖包Comman.jar复制到我们导出的可执行jar包Test.jar包中。而不是和上面一样解压Command.jar包到Test.jar中。

使用第三种方式导出Runable JAR file

还是一样导出到另一个目录中

找到导出的这个jar,然后压缩工具打开

可以看到现在Test.jar的同级目录下多了个文件夹Test_lib,Test_lib中存放的是外部的依赖包Command.jar

而Test.jar中则干干净净,只有原来工程中的文件和配置文件

配置文件中指明了依赖包Command.jar的路径在同级目录下

如果我们把Test.jar剪切到其他地方去,这样Test.jar,就找不到Test_lib中的依赖包,这样将会运行错误。
例如这个吧Test.jar剪切到上级目录中,在cmd中输入java -jar Test.jar运行程序,此时程序会抛出异常:

Exception in thread "main" java.lang.NoClassDefFoundError: system/call/cmd/Command


这三者的区别就是这样

eclipse 导出可运行jar包时三种Library handling的区别相关推荐

  1. Eclipse导出可执行Jar包及相关资源路径的处理

    1. Eclipse导出可执行jar包方法: 项目上右击-->Export-->Runnable JAR file-->选择main方法所在的类,选择导出路径,勾选"Pac ...

  2. 运行jar包时指定prod时报异常

    1 问题 运行jar包时指定prod时报异常,异常如下: PS D:\Workspace\ZJ\dataPlatform\dataPlatform-api\target> java -jar . ...

  3. Eclipse下导入外部jar包的3种方式

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

  4. Linux 运行jar包的几种方式

    nohup java -jar wechat-push-0.0.1-SNAPSHOT.jar > wechat-push-0.0.1.out 2>&1 & 一.Linux ...

  5. 全网最全Linux 运行jar包的几种方式

    一.Linux 运行jar包的几种方式 方式一: java -jar xxx.jar 最常用的启动jar包命令,特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 ...

  6. Intellij IDEA 添加jar包的三种方式

    Intellij IDEA 添加jar包的三种方式 inzaghihalo https://blog.csdn.net/superinzaghi747/article/details/80539095 ...

  7. java -jar命令运行jar包时指定外部依赖jar包

    大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个jar包的程序入口.具体的方法是修改jar包内目录META-INF下的MANIFE ...

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

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

  9. 怎样在运行jar包时指定jdk

    正常情况下,运行jar包使用命令是: java -jar xxx.jar 这里默认使用JAVA_HOME环境变量中的jdk. 如果想要指定jdk路径运行jar包,可以使用以下命令: %~dp0\jav ...

最新文章

  1. emmmmmm(官宣?)
  2. django 1.2.1更新后 关于CSRF token missing or incorrect的问题
  3. 数仓 调度_网易实时数仓实践
  4. EduCoder 机器学习 决策树
  5. 一文搞定Linux shell脚本编程( 史上最全汇总 )
  6. python写一个自动登录脚本_Python 实现自动登录+点击+滑动验证功能
  7. 编写一个程序,找到大于平均值的项的数目
  8. calendar操作详解
  9. springboot 2.x 使用定时任务执行多次问题
  10. VC 2008 Express下安装OpenCV2.3.1
  11. Python学习教程(Python学习路线):Python3你还未get到的隐藏技能
  12. sql server cross/outer apply 用法
  13. 自然语言处理NLP星空智能对话机器人系列:理解语言的 Transformer 模型-子词分词器
  14. 【数字设计】恒玄科技_笔试面试题目分享
  15. 计算机毕业论文个人小结2500字,毕业论文个人小结
  16. 互联网和大数据是什么意思_互联网大数据是什么,求详细的解答
  17. android 常用action和category
  18. php 识别lrc,自动识别LRC歌词精选.pptx
  19. 没有稿酬,混了这么多年-文艺it工程师自白(写于2014年)
  20. onedrive登陆以后是白板,我下载了onedrive以后,安装到登陆界面,输入账号,提示:我们的系统中没有 - Microsoft Community...

热门文章

  1. word转html教程,Word转HTML工具Convert Word to HTML安装教程
  2. mybatis学习(2)
  3. isinstance用法
  4. Ubuntu20.04中安装pycharm社区版本
  5. h5动画 php,用H5的canvas做恐怖动画
  6. 小白入门之HTML--第六章 流动,浮动模型,菜单和页面布局
  7. SQL Server数据控制(Grant和Revoke)——架构
  8. gensim使用指南
  9. 互联网实名制部分实施,网民大多心存芥蒂
  10. Java反射之创建对象的四种方式