这个问题可能是理论上的,但我找不到任何合适的解决方案。
假设我正在制作一个使用3个jar文件的模块(hibernate,log4j,jackson)。
现在我想编译我的模块并创建一个jar,这样我的模块就可以被任何其他模块使用,并且该模块不应再需要三个jar(hibernate,log4j,jackson)。
,即我的模块jar文件不应该有任何依赖。
我正在使用eclipse。我能够创建一个jar(project-> export-> jar),但它不包含jar中的jar 指导我如何做到这一点。
apache ant在这里有用吗?
答案 0 :(得分:1)
Eclipse的Runnable Jar Wizard
Eclipse的Runnable Jar向导(文件→导出...→Java→Runnable Jar文件)允许开发人员从现有的运行配置创建可执行jar:
该向导包含3个处理依赖项的选项:
将所需的库提取到生成的jar: unarchives库中 依赖关系并将它们重新打包到您的可执行jar中。这个 选项具有简单的优点,不需要自定义 类加载器。但是重新打包库jar可能会导致其他问题 问题并没有保留签名罐子的签名。这个 选项也可能违反您所在图书馆的许可条款 使用
将所需的库打包到生成的jar中:创建一个“胖罐子” 使用自定义类加载器。生成的罐子包含 应用程序的类和资源 启动应用程序所需的库jar 一个小的自定义类加载器,知道如何在另一个jar存档中找到jar库
复制所需的库...:创建应用程序存档和副本 目标文件夹所需的任何库依赖项。
我认为第二种选择适合您目前的目的。
答案 1 :(得分:0)
您需要将依赖项中的所有类包含到jar文件中。 由于jar文件只是一个zip文件,你可以使用任何存档管理器(如Winzip)来浏览它们,然后将你所依赖的jar的内容复制到你自己的jar中,注意保持目录结构的完整。
这样你就可以把所有东西放在一个罐子里。