繁体   English   中英

Weblogic上的多个类加载器问题

[英]multiple classloader issue on weblogic

exception loader constraint violation: when resolving method "org.apache.hadoop.io.IOUtils.cleanup(Lorg/apache/commons/logging/Log;[Ljava/io/Closeable;)V" the class loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader) of the current class, org/apache/hadoop/hdfs/FileInputStreamCache, and the class loader (instance of weblogic/utils/classloaders/GenericClassLoader) for resolved class, org/apache/hadoop/io/IOUtils, have different Class objects for the type org/apache/commons/logging/Log used in the signature

我在使用应用程序时(而不是在部署耳朵时)得到了此信息。 如果我理解这一点,那么我有两个具有两个不同日志对象的类加载器? 我怎样才能把他们都提到一个?
编辑1
经过进一步调查,我认为此错误是由于我们使用的是通用jars库,并且那里存在另一种通用版本,导致它们发生冲突。 有什么方法可以指定weblogic使用特定的库而不是打包? 我想进一步调查

您将必须更新weblogic-application.xml以使用use preferred-application-package告诉Web逻辑使用web-inf / lib中的jar,而不是web逻辑中的jar。 请参阅链接Weblogic 10.3.5覆盖Spring版本

<weblogic-application>
    <prefer-application-packages>
       <package-name>org.apache.*</package-name>
       <package-name>org.springframework.*</package-name>
    </prefer-application-packages>
</weblogic-application>

您需要检查WAR文件的WEB-INF / lib目录,以确保它们不包含EAR / lib目录中也存在的jar。

Web应用程序将始终使用WEB-INF / lib类,然后在EAR文件中查找它们。 但是,从EAR加载的类将只能看到EAR中的其他类。 如果两个地方都有相同(或相似)的jar文件,则将导致您所描述的类加载问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM