我想知道使用runnable jar文件创建从eclipse中提取和打包库到jar文件之间的区别。
如果我的程序(runnable jar)使用其他需要这些外部库(jar)的类,我应该选择什么?
答案 0 :(得分:45)
如果要将jar放入生成的jar文件中,可以使用打包方法。
例如,如果您使用的是Apache库或其他第三方jar,您可能希望将这些jar保留在生成的jar中。在这种情况下,使用包装。
“将所需的库打包到jar文件中”选项将org.eclipse.jdt.internal.jarinjarloader
包的类放入生成的文件中,此包位于生成的jar文件的根目录下。由于Eclipse的jar加载器类,此选项还会根据大小创建更大的jar文件。
提取所需的库将导致按照包命名约定将第3方库的类放入jar文件中,例如:如果你打开你的jar内容,你可以看到org.apache..
包下的一些类。
这些jar文件的MANIFEST.MF
个文件的主类条目不同:
打包所需库时的主要课程条目:
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
提取必需的库时的主类条目:
Main-Class: YourMainClass
答案 1 :(得分:1)
对于我来说,主要区别在于打包的 JAR文件作为一个单独的项目完整地包含在内,因此保留了它们的版权信息和签名数据。
如果选择 extract ,则将类文件从其原始上下文中拉出并像原始文件一样存储,因此可能会违反某些许可条件,尽管最终JAR的大小为在这种情况下较小。 Eclipse也会在这种情况下警告您有关许可的问题。
因此,如果使用第三方JAR库,总是打包是很专业的。
答案 2 :(得分:-1)
尝试两种方法,然后使用Zip程序打开生成的jar文件。很有启发性。