【问题标题】:java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving methodjava.lang.LinkageError:接口 itable 初始化中的加载程序约束冲突:解析方法时
【发布时间】:2013-11-20 07:35:00
【问题描述】:

我在Web Service Atuthentication 链接之后开发了一个带有 java 身份验证的 Web 服务 如果我使用 JDK 1.6/JBoss 4.2,同样运行良好,但是当我在 Jboss 5.1.0 GA 中部署它时,我收到部署错误。我谷歌发现JDK1.6,Jboss和我的应用程序之间存在一些jar冲突。并将 JBoss/lib/endorsed jaxws-ri.jar 替换为最新的 jaxws-ri-2.2.8.jar。但我现在无法确定是哪个 jar 造成了冲突。

下面是我的 web.xml、sun-jaxws.xml 和异常代码。

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>biservices</display-name>
<listener>
<listener-class>
        com.sun.xml.ws.transport.http.servlet.WSServletContextListener
    </listener-class>
</listener>
<servlet>
<servlet-name>BiServices</servlet-name>
 <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>BiServices</servlet-name>
<url-pattern>/biservices</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>120</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


sun-jaxws.xml
<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
<endpoint
   name="IBiUpdate"
   implementation="com.sbilife.ws.BiUpdate"
   url-pattern="/biservices"/>
</endpoints>

exception
java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "com.sun.xml.ws.util.xml.XMLStreamReaderFilter.getAttributeName(I)Ljavax/xml/namespace/QName;" the class loader (instance of org/jboss/classloader/spi/base/BaseClassLoader) of the current class, com/sun/xml/ws/util/xml/XMLStreamReaderFilter, and the class loader (instance of <bootloader>) for interface javax/xml/stream/XMLStreamReader have different Class objects for the type javax/xml/namespace/QName used in the signature

谢谢 猪油

【问题讨论】:

  • 您是否在 JBoss 中部署了多个包含 javax/xml/namespace/QName 的 jar?
  • @Caleryn 但如何找到哪个罐子。
  • gist.github.com/tg123/3897887 在你的web-inf/lib 中运行这个 python 脚本来查看哪个 jar 被复制
  • farmer1992 感谢代码,Caleryn 但我在 Eclipse 中找到了一种在 jar 文件中搜索类的方法,实际上我认为搜索不会查看 jar 类,但它甚至会在 jar 中搜索。究竟要搜索 XMLStreamReaderFilter.getAttributeName(I) 方法或 javax/xml/namespace/QName 什么,因为我的一位朋友告诉我 getAttributeName(I) 正在创建冲突,并且此类仅在 jaxws-rt.jar 中找到。当我搜索 javax/xml/namespace/QName 时不匹配。

标签: java web-services


【解决方案1】:

抛出异常是因为在您的 Web 应用程序中至少存在一个包含 javax.xml.namespace.QName 类的 jar,并且该类与 JBoss 的 jar 之一中包含的相同类冲突。

在 JBoss 上部署时,您应该从您的 Web 应用程序中删除该(这些)jar。

包含javax.xml.namespace.QName 类的jar 列表位于http://www.findjar.com/class/javax/xml/namespace/QName.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-30
    • 2011-12-23
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2014-08-16
    • 2018-04-04
    相关资源
    最近更新 更多