【问题标题】:multiple classloader issue on weblogicweblogic上的多个类加载器问题
【发布时间】:2014-07-25 09:57:10
【问题描述】:
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 库,并且那里有另一个版本的 commons,使它们发生冲突。有没有办法指定 weblogic 使用特定的库而不是打包?我想进一步调查一下

【问题讨论】:

  • 你用什么来管理你的应用程序的依赖关系?
  • 你的 poms 中是否依赖于 commons-logging?如果是,请尝试提供的范围(如果尚未设置)。

标签: java apache weblogic-10.x


【解决方案1】:

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

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

【讨论】:

  • 感谢史蒂夫的回复!我不明白的是,如果从 EAR 加载的类只看到 EAR 中的其他类,为什么会产生这样的问题。如果 EAR 坚持 EAR 和 WAR 坚持 WAR,为什么我会遇到这个问题?
  • 大概您的 WAR 文件将从 EAR 加载 一些 类,否则为什么还要在其中。您的 Web 应用程序最终将不可避免地引用从 EAR 加载的类,其中一些可能会引用类的 EAR 版本。将其与类的 WAR 版本混合会导致各种令人兴奋的类加载问题
  • 我现在明白你想说什么了。基本上战争从两个地方加载类,它们不匹配。我回家后试试这个
  • 有一件事仍然困扰着我:我同时拥有 。如果我用这个,不应该用war jar吗?
  • 我相信这些标签是用来排除服务器类路径中的类的。即来自应用程序外部的类。
【解决方案2】:

您必须更新 weblogic-application.xml 以使用 prefer-application-package 来告诉 Web 逻辑使用来自 web-inf/lib 的 jar,而不是来自 Web 逻辑的 jar。参考链接Weblogic 10.3.5 Overriding Spring Version

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

【讨论】:

  • 我正在使用它。该项目从一开始就使用它,但我认为它被忽略了。该错误是由于两个日志实现引起的,我也会检查一下
猜你喜欢
  • 2020-07-23
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多