我们在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