在 JAR 中包含 JAR 的类路径

新手上路,请多包涵

是否可以指定一个 Java classpath 包含另一个 JAR 文件中包含的 JAR 文件?

原文由 Paul Reiners 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 420
2 个回答

如果您尝试创建一个包含您的应用程序及其所需库的 jar,有两种方法(据我所知)可以做到这一点。第一个是 One-Jar ,它使用特殊的类加载器来允许嵌套 jar。第二个是 UberJar ,(或 Shade ),它分解包含的库并将所有类放在顶级 jar 中。

我还应该提到 UberJar 和 Shade 分别是 Maven1 和 Maven2 的插件。如下所述,您还可以使用程序集插件(实际上它更强大,但更难正确配置)。

原文由 Steve Moyer 发布,翻译遵循 CC BY-SA 4.0 许可协议

您不想使用那些“分解 JAR 内容”的解决方案。它们肯定会让人更难看到东西(因为所有东西都在同一层展开)。此外,可能存在命名冲突(如果人们使用适当的包,则不应发生,但您无法始终控制这一点)。

您想要的功能是 前 25 个 Sun RFE 之一: RFE 4648386 ,Sun 以其无限的智慧将其指定为低优先级。我们只能希望 Sun 醒来……

与此同时,我遇到的最佳解决方案(我希望 Sun 将其复制到 JDK 中)是使用自定义类加载器 JarClassLoader

原文由 Bruce Willis 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题