如何使用 Eclipse 中包含的外部库创建 jar?

Posted

技术标签:

【中文标题】如何使用 Eclipse 中包含的外部库创建 jar?【英文标题】:How to create a jar with external libraries included in Eclipse? 【发布时间】:2012-06-17 12:23:03 【问题描述】:

我完成了连接到数据库 (mysql) 的项目。现在我想将项目导出为 jar。但我不知道如何包含它的外部依赖项?有什么方法可以在 Eclipse 中执行此操作,或者我应该为此使用任何脚本吗?。

【问题讨论】:

您打算如何交付应用程序。给最终用户?网络/互联网,磁盘或闪存驱动器,..还有什么?应用程序。有图形用户界面吗? 【参考方案1】:

当您将项目导出为“可运行 jar”(在项目上右键 -> 导出 -> 可运行 jar)时,您可以选择将所有依赖项打包到生成的 jar 中。它还有其他两种方法(见截图)来导出你的库,在决定你将使用哪种打包方法时要注意许可证。

“启动配置”下拉列表中填充了包含main(String[]) 方法的类。当您“运行” jar 时,将启动选定的类。

导出为可运行 jar 使用构建路径上的依赖项(在项目上用鼠标右键 -> 构建路径 -> 配置构建路径...)。当您导出为“常规”(不可运行)jar 时,您可以选择项目中的任何文件。如果项目文件夹中有库,则可以包含它们,但不能包含外部依赖项,例如 maven(对于 maven 项目,search here)。

【讨论】:

@Joost:先生,我在尝试将 java 应用程序导出为可运行 jar 时,在启动配置标题下没有任何选项。可能有什么问题或遗漏? Eclipse 列出了它知道的main() 方法。尝试运行您的应用程序一次(右键单击项目、运行方式、Java 应用程序),然后再次导出。 这与这个问题无关,因为它清楚地说明了 Eclipse。如果您找不到答案,请发布一个新问题(肯定已经在本网站的某个地方) 有谁知道如何为 Eclipse 中的不可运行的 jar 执行此操作?没有与“必需库”相关的选项。 @jb1 你有想过这个吗?【参考方案2】:

您可以使用 Export->Java->Runnable Jar 创建一个包含其依赖项的 jar

或者,您也可以使用 fatjar eclipse 插件将 jar 捆绑在一起

【讨论】:

【参考方案3】:

您可以右键单击项目,单击导出,输入“jar”,选择“可运行的 JAR 文件导出”。您可以选择“将所需的库提取到生成的 JAR 中”。

【讨论】:

【参考方案4】:

个人,

上面的答案都不适合我,我仍然不断收到 NoClassDefFound 错误(我使用 Maven 进行依赖)。我的解决方案是使用“mvn clean install”构建并使用该命令创建的“[project]-jar-with-dependencies.jar”。同样,在 Eclipse 中,您可以右键单击项目 -> 运行方式 -> Maven 安装,它会将 jar 放在目标文件夹中。

【讨论】:

【参考方案5】:

如果要导出 Java Web 项目的所有 JAR 文件,请使用 ZIP 工具(例如 7-Zip)打开最新生成的 WAR 文件,导航到 /WEB-INF/lib/ 文件夹。在这里,您将找到该项目所需的所有 JAR 文件(如“引用的库”中所列)。

【讨论】:

【参考方案6】:

要在eclipse中生成jar文件,在要生成的项目上右击,选择Export>Java>Runnable Jar File,

它的创建 jar 包含来自 Pom.xml 的所有依赖项,但是如果您为您的应用程序使用第三方依赖项,请确保许可证问题。

【讨论】:

【参考方案7】:

在将源导出到 jar 时,请确保从选项中选择可运行的 jar 选项。然后选择是否要打包所有依赖项 jar 或直接将它们包含在 jar 文件中。这取决于您正在进行的项目。

然后直接通过 java -jar example.jar 运行 jar。

【讨论】:

【参考方案8】:

如果它是一个独立的(主要方法)java项目然后没有任何特定路径将所有jar放在项目中没有任何特定路径然后右键单击项目->导出->可运行jar->选择午餐配置和库处理,然后选择单选按钮选项“将所需的库打包到生成的 jar 中”-> 完成。

或者

如果你有一个 web 项目,那么将所有的 jars 放在 web-inf/lib 文件夹中并执行相同的步骤。

【讨论】:

以上是关于如何使用 Eclipse 中包含的外部库创建 jar?的主要内容,如果未能解决你的问题,请参考以下文章

如何从模块外部读取与 __main__.py 相同模块中包含的文件?

如何打开框架中包含的视图控制器作为 iOS 的静态库?

使用签名中包含的密钥正确验证了签名,但该密钥不受信任

签名使用签名中包含的密钥正确验证,但该密钥不受信任

Eclipse for C ++无法识别自酿的GSL和Boost库

GWT - IE 不下载 UiBinder 中包含的外部脚本