有人知道加载的罐子的优先顺序是什么?
在 WEB-INF / lib 中有几个罐子(在战争中耳朵 WAS 6.1 )。
我们说 aaa.jar , bbb.jar , ccc.jar 。我在 aaa.jar 和 ccc.jar
中有两个不同版本的 paq1.paq2.paq3.MyClassccc.jar 中的一个是正确的; aaa.jar 中的那个是错误的。
似乎错误的版本在正确版本之前已本地化。
有人知道我必须做些什么来保证在 aaa.jar 之前加载 ccc.jar 吗?
(这是对更真实/复杂问题的简化,因此在这种情况下重命名jar不适用。)
提前谢谢
答案 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的排序,也没有强制特定排序的选项。我建议删除重复的类和资源。