我们在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
- 1
这三者的区别就是这样
今天的文章eclipse 导出可运行jar包时三种Library handling的区别分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/64502.html

















