我需要做些什么来保证在aaa.jar之前加载ccc.jar?

时间:2013-12-19 10:16:35

标签: java jar ear websphere-6.1

有人知道加载的罐子的优先顺序是什么?

WEB-INF / lib 中有几个罐子(在战争耳朵 WAS 6.1 )。

我们说 aaa.jar bbb.jar ccc.jar 。我在 aaa.jar ccc.jar

中有两个不同版本的 paq1.paq2.paq3.MyClass

ccc.jar 中的一个是正确的; aaa.jar 中的那个是错误的。

似乎错误的版本在正确版本之前已本地化。

有人知道我必须做些什么来保证在 aaa.jar 之前加载 ccc.jar 吗?

(这是对更真实/复杂问题的简化,因此在这种情况下重命名jar不适用。)

提前谢谢

3 个答案:

答案 0 :(得分:3)

我不相信servlet规范保证lib-folder中jar的任何特定Classpath排序。因此,您正在考虑特定于供应商的功能,或者更糟糕的是,供应商特定的意外行为,这往往非常脆弱。

如果您的部署中存在错误的类,则可以解决部署中的错误类定义问题。我建议您的构建过程对此负责。

如果坏类本身在WAS中,您通常可以通过将jar放在服务器本身的扩展文件夹中来覆盖它,而不是作为部署的一部分。

答案 1 :(得分:1)

JVM从类路径中的第一个jar获取类,其中存在适当的类。所有其他人都被丢弃。您可以从WEB-INF中删除此jar并将它们直接放到webserver的类路径中。但这将是一个难看的解决方案。

答案 2 :(得分:0)

WebSphere Application Server不保证WEB-INF/lib内JAR的排序,也没有强制特定排序的选项。我建议删除重复的类和资源。