【发布时间】:2012-03-25 22:07:30
【问题描述】:
我想知道从 eclipse 中提取和打包库到 jar 文件和创建可运行的 jar 文件之间的区别。
如果我的程序(可运行 jar)使用其他需要这些外部库(jar)的类,我应该选择什么?
【问题讨论】:
标签: java jar executable
我想知道从 eclipse 中提取和打包库到 jar 文件和创建可运行的 jar 文件之间的区别。
如果我的程序(可运行 jar)使用其他需要这些外部库(jar)的类,我应该选择什么?
【问题讨论】:
标签: java jar executable
如果你想将 jars 放入你生成的 jar 文件中,你可以使用打包的方法。
例如,如果您使用 Apache 库或其他一些 3rd 方 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
【讨论】:
就我的使用而言,主要区别在于打包 JAR 文件作为一个单独的项目完整地包含在内,因此保留了它们的版权信息和签名数据。
如果您选择 extract,类文件会从其原始上下文中提取出来并像您创建它们一样存储,因此可能违反某些许可条件,尽管最终 JAR 的大小将是在这种情况下更小。在这种情况下,Eclipse 也会警告您有关许可。
因此,如果使用第三方 JAR 库,始终打包是专业的。
【讨论】:
尝试两种方式,然后使用 Zip 程序打开生成的 jar 文件。很有启发性。
【讨论】: