1

我正在 WAS 7.0 中配置 Java Web 模块。我的所有模块 JAR 都在 WEB-INF/lib 目录中,它们都在加载。我的问题是它们加载的顺序。我有 2 个罐子:它们someJar.jaraPatchForSomeJar.jar位于 WEB-INF/lib 中。aPatchForSomeJar.jar修补在someJar.jar. 问题是someJar.jar模块类路径比补丁更高。这导致原始 jar 中的类被用于修补 jar 中的修补版本。

在我的开发环境(win XP 上的 RAD 7.5)中,模块类路径按字母顺序加载(导致在aPatchForSomeJar.jar之前加载someJar.jar)。但是,当部署到测试环境(GNU/Linux 上的 WAS 7.0)时,模块类路径似乎是以随机顺序加载的(至少绝对不是字母顺序),其中补丁是在原始 Jar 之后加载的。

有谁知道我如何更改模块加载 WEB-INF/lib jar 的顺序?

4

1 回答 1

3

据我所知,没有按字母顺序加载 jar 文件的概念。

你的打包模型需要重新审视——同时打包 patch.jar 和 original.jar 会让你很伤心。

当 patch.jar 包含固定的 jar 时,为什么需要原始 jar?

即使您想保留 original.jar 和 patch.jar(假设它是完整的),您也可以尝试使用类加载器层次结构来确保 patch.jar 与 original.jar 相比总是先加载。

例如,您可以使用 parent_last 的类加载策略在共享库级别打包 original.jar,并将 patch.jar 保存在您的 WEB-INF/lib 中。

虽然我建议将此作为替代方案,但您应该考虑用 patch.jar 替换 orginal.jar 或让补丁包含所有更改的文件(并将它们从 original.jar 中删除)

高温高压

芒鲁

于 2012-04-19T06:13:31.470 回答