【问题标题】:Runnable jar creation options in eclipse indigoeclipse indigo 中的可运行 jar 创建选项
【发布时间】:2012-12-30 16:28:14
【问题描述】:

我正在使用 eclipse indigo 创建一个可运行的 jar,但遇到了两个选项:

Extract required libraries into generated jar

Package required libraries into generated jar

虽然使用第一个选项创建仅生成一个包含应用程序包和 META-INF 包的 jar 文件,但第二个选项还创建了一个 org 包。

这个org 包被其子文件夹进一步扩展为org> eclipse> jdt> internal> jarinjarloaderjarinjarloader 包包含一些我以前从未见过的类。

这是我在第二个选项中的清单文件:

Manifest-Version: 1.0
Rsrc-Class-Path: ./
Class-Path: .
Rsrc-Main-Class: main.SimpleCalculator
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

main 是我的应用程序包,SimpleCalculator 是我的主类。

我的问题是:

1) 这两个选项有何不同?第二个选项添加了哪些新类?第二个选项的清单中还有哪些不同的名称-值对?

2) 此外,除了它们的清单文件允许可运行的可执行文件之外,不可运行和可运行的 jar 之间是否有任何区别。 (我找到了在我的项目中指定主类的选项,同时创建了一个不可运行的 jar 文件,所以我在这里遗漏了一些东西还是只是 eclipse 试图提供额外的帮助?)

注意:我对这两个选项有一些猜测,但它们只是……猜测!

提前谢谢!

【问题讨论】:

  • @NikolayKuznetsov 我已经读过了,它没有回答我的问题

标签: java eclipse jar executable-jar eclipse-indigo


【解决方案1】:

1) 这两个选项有何不同?

What is the difference between runnable jar library handling options?

2) 第二个选项添加的这些新类是什么?

org 包用于 jar-in-jar-loader。使用package option,它会变成胖罐子,您的主类将不再是真正的主类,请参阅这种情况下的清单。

来自 Ant,但你的想法对吗?

 <attribute name="Main-Class" value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader"/>
 <attribute name="Rsrc-Main-Class" value="YourRealMainClass"/>

3) 另外,除了清单文件之外,不可运行和可运行的 jar 有什么区别吗?

我不这么认为,但是从 Eclipse 导出不可运行的 jar 可以指定要包含的文件,而不是更灵活。

【讨论】:

  • 当我使用 eclipse 中的 non-runnable jar 选项创建了一个可运行的 jar 时,为什么没有添加这些加载器类?那它就不需要它们了吗?
  • 还有为什么manifest文件中Class-PathRsrc-Class-Path的值不一样?难道保持它们不变也行吗?
  • @SurenderThakran,如果您将依赖的 jar 嵌入到一个 jar 中,则会添加该加载器。
  • @SurenderThakran,因为它是一个特例。如果您将值重置为与 extract option 相同的值,则会出现许多 ClassNotFound 异常。
【解决方案2】:

第一个问题的答案是第一个选项提取依赖类文件和资源,然后将它们打包成你的jar文件,使用此选项需要注意许可证问题

至于第二个选项,它只打包,即:将 jar 文件按原样添加到您的 jar 文件中,并通过 MANIFEST 引用它们。

还有一个用于创建可运行 jar 文件的选项,它将所有依赖项 jar 文件放在与项目的可运行 jar 相邻的文件夹中,并在 MANIFEST 中包含对该文件夹中 jar 的引用。

第二个问题的答案是,是的,eclipse 试图通过使用您的运行时配置让生活变得更轻松,以便您可以根据您选择的任何配置创建一个可运行的 jar。您可以通过手动创建包含主类的 MANIFEST 来创建一个可运行的 jar。

【讨论】:

    猜你喜欢
    • 2012-11-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多