是否可以指定一个 Java classpath
包含另一个 JAR 文件中包含的 JAR 文件?
原文由 Paul Reiners 发布,翻译遵循 CC BY-SA 4.0 许可协议
是否可以指定一个 Java classpath
包含另一个 JAR 文件中包含的 JAR 文件?
原文由 Paul Reiners 发布,翻译遵循 CC BY-SA 4.0 许可协议
您不想使用那些“分解 JAR 内容”的解决方案。它们肯定会让人更难看到东西(因为所有东西都在同一层展开)。此外,可能存在命名冲突(如果人们使用适当的包,则不应发生,但您无法始终控制这一点)。
您想要的功能是 前 25 个 Sun RFE 之一: RFE 4648386 ,Sun 以其无限的智慧将其指定为低优先级。我们只能希望 Sun 醒来……
与此同时,我遇到的最佳解决方案(我希望 Sun 将其复制到 JDK 中)是使用自定义类加载器 JarClassLoader 。
原文由 Bruce Willis 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
如果您尝试创建一个包含您的应用程序及其所需库的 jar,有两种方法(据我所知)可以做到这一点。第一个是 One-Jar ,它使用特殊的类加载器来允许嵌套 jar。第二个是 UberJar ,(或 Shade ),它分解包含的库并将所有类放在顶级 jar 中。
我还应该提到 UberJar 和 Shade 分别是 Maven1 和 Maven2 的插件。如下所述,您还可以使用程序集插件(实际上它更强大,但更难正确配置)。