3

我抛出了一个间歇性链接错误:(这基本上是我所拥有的所有信息)

java.lang.LinkageError loader constraint violation: 
  when resolving field 'service' of the class loader instance of 
  java/net/FactoryURLClassLoader) of the referring class 
  org/apache/axis/client/Stub, and the class loader (instance of
  weblogic/utils/classloaders/ChangeAwareClassLoader) 
  for the field's resolved type, java/xml/rpc/Service, 
  have different class objects for that type

或者以更易读的方式

  • 异常: java.lang.LinkageError

    • 场地: service
    • CL 实例: java.net.FactoryURLClassLoader
    • 参考类: org.apache.axis.client.Stub
    • 第二个 CL 实例: weblogic.utils.classloaders.ChangeAwareClassLoader
    • 字段的解析类型: java.xml.rpc.Service

这是否意味着我加载了 2 个版本的 java.xml.rpc.Service?是这样吗?怎么会这样?解决方法是什么?

4

2 回答 2

2

这是否意味着我加载了 2 个版本的 java.xml.rpc.Service?是这样吗?

是的。

怎么会这样?

当您有两个类加载器都加载同一个类时,就会发生这种情况。在您的情况下,类加载器是不同 ClassLoader 类的实例:

    java.net.FactoryURLClassLoader

    weblogic.utils.classloaders.ChangeAwareClassLoader

解决方法是什么?

我不是 Weblogic 用户,但理论上的解决方案是将包含有问题的类的 JAR 文件放入上述两者的共同祖先类加载器的类路径中。

于 2012-04-03T16:26:57.390 回答
2

解决方案最终是更新已weblogic-application.xml部署应用程序的文件

该应用程序使用了一个旧的jaxrpc-api.jar,由于各种原因我们无法删除,

我们以前更喜欢内部 jar 的解决方案是这样的(有没有更好的方法?)

<wls:prefer-application-packages>
  ...
  <wls:package-name>java.xml.rpc.*</wls:package-name>
</wls:prefer-application-packages>
于 2012-04-04T15:49:16.753 回答