【发布时间】:2013-10-30 09:34:18
【问题描述】:
浏览 JSF 应用程序页面时出现 Java 链接错误。应用部署在Jboss-eap -5.1
错误跟踪:
2013-10-30 14:16:54,559 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (http-localhost%2F127.0.0.1-8080-4)
java.lang.LinkageError: loader constraint violation:
when resolving field "NODESET" the class loader (instance of org/jboss/classloader/spi/base/BaseClassLoader) of the referring class, javax/xml/xpath/XPathConstants,
and the class loader (instance of <bootloader>) for the field's resolved type, javax/xml/namespace/QName, have different Class objects for that type
javax.faces.el.EvaluationException: java.lang.LinkageError: loader constraint violation: when resolving field "NODESET" the class loader (instance of org/jboss/classloader/spi/base/BaseClassLoader) of the referring class, javax/xml/xpath/XPathConstants, and the class loader (instance of <bootloader>) for the field's resolved type, javax/xml/namespace/QName, have different Class objects for that type
at com.sun.faces.application.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
您能否建议我可能的原因,或者如果有人遇到类似问题,如何解决? 提前致谢, rdgs, RK
【问题讨论】:
-
我相信您的应用程序的类加载器可以访问包含
javax.xml.namespace.QName类的 JAR,该类也由引导类加载器加载。搜索您的 JAR,删除任何包含提到的类(甚至可能不止一个),然后重试。 -
◦rt.jar 是 jre 系统库的一部分,它还包含类 javax.xml.namespace.QName [2351 字节,jvm >= 1.5] 有什么方法可以在运行时 Jboss 选择 jar与来自 EAR 的应用程序相关
-
rt.jar由引导类加载器加载。我怀疑 JBoss 也能接受它。如果在您的应用程序的类路径中没有其他 JAR 包含QName,则该错误可能有其他原因。但是请检查您的 已部署 应用程序的 JAR 以确定。还要检查服务器的类路径;它是否以某种方式更改,添加了一个包含QName的 JAR?
标签: java jboss classloader linkageerror