如何在Weblogic EAR中设置jar的顺序?

时间:2014-12-31 13:38:12

标签: weblogic classloader

我有一个EAR文件,其中包含两个不同的jar,它们共享一些具有相同包+类名的类。这导致在EAR文件本身内部内部的类加载的重要性。

如何在同一个APP-INF / lib中加载另一个jar之前,告诉Weblogic从APP-INF / lib加载一个jar?如果存在冲突,我需要定义一个特定的顺序,它将从JAR a而不是JAR b。

我正在使用Webogic 11g(10.3)。

感谢。

2 个答案:

答案 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”属性-我花了一个星期或更长时间来梳理头发,试图找到解决类似问题的方法,这就是解决问题的方法。