2012-03-08 54 views
57

我想知道从eclipse提取和封装库到jar文件与创建可运行jar文件之间的区别。提取和封装库到jar文件之间的区别

如果我的程序(runnable jar)使用其他需要这些外部库(jar)的类,我应该选择什么?

+0

可能重复[What is th运行的JAR库处理选项E之间的区别?(http://stackoverflow.com/questions/8302894/what-is-the-difference-between-runnable-jar-library-handling-options) – 2014-12-12 01:38:28

回答

38

如果要将jar放入生成的jar文件中,可以使用打包方法。 例如,如果您正在使用Apache库或其他一些第三方jar文件,你可能希望保留这些罐子在生成的JAR保存。在这种情况下,请使用包装。 “将所需的库打包到jar文件中”选项将org.eclipse.jdt.internal.jarinjarloader包的类放入生成的文件中,并且此包位于生成的jar文件的根目录下。由于Eclipse的jar加载器类,此选项还根据大小创建较大的jar文件。

提取所需的库将导致按照包命名约定将第三方库的类放入jar文件中,例如,如果你打开罐子的内容,你可以看到在org.apache..包一些类。

主类的条目是MANIFEST.MF文件这些jar文件之间的不同:

主要类条目,当你需要的库:

Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader 

主要类条目,当你提取需要的库:

Main-Class: YourMainClass 
+5

什么优势或者利用然后打包? – ctekk 2012-03-08 13:06:54

+1

的包装,你可以jar文件加载到通过“JarRsrcLoader”类的产生罐子。如果你是使用第三方罐子和想你的应用程序代码与这些罐子结合起来,你可以使用Eclipse的包装程序是这样的。看到我编辑的答案。 – Juvanis 2012-03-08 13:25:09

+10

请注意性能问题。我曾经使用jarinjarloader将我的图书馆罐子包装在我的应用程序jar包中,直到昨天。然后,更新JRE到版本8日更新31(在Windows上)后,执行我的应用程序变得极大慢(高达10倍)。当我选择将库罐的内容提取到我的罐子里时,问题就解决了。 – Giuseppe 2015-02-25 11:58:41