我有一个EAR文件,其中包含两个不同的jar,它们共享一些具有相同包+类名的类。这导致在EAR文件本身内部内部的类加载的重要性。
如何在同一个APP-INF / lib中加载另一个jar之前,告诉Weblogic从APP-INF / lib加载一个jar?如果存在冲突,我需要定义一个特定的顺序,它将从JAR a而不是JAR b。
我正在使用Webogic 11g(10.3)。
感谢。
答案 0 :(得分:1)
weblogic-application.xml
中的顶级元素有一个可选的classloader-structure元素,您可能想要查看它。例如,您可以执行以下操作:
<classloader-structure>
<module-ref>
<module-uri>ejb1.jar</module-uri>
</module-ref>
<module-ref>
<module-uri>web3.war</module-uri>
</module-ref>
<classloader-structure>
<module-ref>
<module-uri>web1.war</module-uri>
</module-ref>
</classloader-structure>
</classloader-structure>
详细了解如何在Oracle docs声明自定义类加载。您也可以在感兴趣的链接中找到类加载器分析工具(CAT)。
答案 1 :(得分:1)
如果您收到ClassNotFound异常,请尝试检查每个模块的MANIFEST.MF,以查看是否使用APP-INF / lib中jar的位置正确填充了“ Class-Path”属性-我花了一个星期或更长时间来梳理头发,试图找到解决类似问题的方法,这就是解决问题的方法。