1

这个问题可能是理论上的,但我找不到任何合适的解决方案。

假设我正在制作一个使用 3 个 jar 文件(hibernate、log4j、jackson)的模块。

现在我想编译我的模块并创建一个 jar,这样我的模块可以被任何其他模块使用,并且该模块不应该再次需要三个 jar(hibernate、log4j、jackson)。

即我的模块 jar 文件不应该有任何依赖关系。

我正在使用 eclipse。我能够创建一个 jar(project->export->jar),但它不包含其中的 jar 指导我如何做到这一点。

apache ant 在这里有用吗?

4

2 回答 2

1

Eclipse 的 Runnable Jar 向导

Eclipse 的可运行 Jar 向导(文件 → 导出... → Java → 可运行 Jar 文件)允许开发人员从现有运行配置创建可执行 jar:

在此处输入图像描述

该向导包括 3 个用于处理依赖项的选项:

  1. 将所需的库提取到生成的 jar 中:解压缩库依赖项并将它们重新打包到您的可执行 jar 中。此选项具有简单的优点,并且不需要自定义类加载器。但是,重新打包库 jar 可能会导致其他问题,并且不会保留签名 jar 的签名。此选项还可能违反您正在使​​用的库的许可条款。

  2. 将所需的库打包到生成的 jar 中:使用自定义类加载器创建一个“胖 jar”。生成的 jar 包含启动应用程序所需的应用程序的类和资源库 jar 一个小的自定义类加载器,它知道如何在另一个 jar 存档中查找 jar 库

  3. 复制所需的库...:创建应用程序存档并将任何所需的库依赖项复制到目标文件夹。

我认为第二种选择适合您目前的目的。

于 2013-07-27T16:13:12.743 回答
0

您需要将依赖项中的所有类包含到您的 jar 文件中。由于 jar 文件只是一个 zip 文件,因此您可以使用任何存档管理器(例如 Winzip)来浏览它们,然后将您依赖的 jar 的内容复制到您自己的 jar 中,注意保持目录结构完整。

这样你就可以把所有东西都放在一个罐子里了。

于 2013-07-27T13:46:08.743 回答