Java 无法分析mybatis xml配置文件

Java 无法分析mybatis xml配置文件,java,mybatis,Java,Mybatis,我在读取MyBatis 3.0.2的xml配置文件时遇到问题 我必须在Axis2 1.5的web服务中使用它。我有一个包含以下代码的类: public static org.apache.ibatis.session.SqlSessionFactory getSqlMapper () { org.apache.ibatis.session.SqlSessionFactory sqlMapper; try { String resource = "MyBatis.x

我在读取MyBatis 3.0.2的xml配置文件时遇到问题

我必须在Axis2 1.5的web服务中使用它。我有一个包含以下代码的类:

public static org.apache.ibatis.session.SqlSessionFactory getSqlMapper () {
    org.apache.ibatis.session.SqlSessionFactory sqlMapper;
    try {
        String resource = "MyBatis.xml";
        java.io.Reader reader = org.apache.ibatis.io.Resources.getResourceAsReader(resource);
        sqlMapper = new org.apache.ibatis.session.SqlSessionFactoryBuilder().build(reader);  
    } catch (Exception e) {
        // Si hay un error en este punto, no importa cual sea. Será un error irrecuperable del cual
        // nos interesará solo estar informados.
        // Deberás registrar el error y reenviar la excepción de forma que se te notifique el
        // problema de forma inmediata.
        e.printStackTrace();
        throw new RuntimeException ("Error initializing MyAppSqlConfig class. Cause: " + e);
    }
    return sqlMapper;
}
其中MyBatis.xml是配置文件。当我调用
getSqlMapper
时,在
sqlMapper=new org…
行中,我得到以下异常:

loader约束冲突:解析字段“NODE”时,引用类javax/xml/xpath/XPathConstants的类加载器(org/jboss/classloader/spi/base/BaseClassLoader的实例)和字段解析类型javax/xml/namespace/QName的类加载器(的实例)对于该类型具有不同的类对象
org.apache.axis2.AxisFault:loader约束冲突:解析字段“NODE”时,引用类javax/xml/xpath/XPathConstants的类加载器(org/jboss/classloader/spi/base/BaseClassLoader的实例)以及字段解析类型javax/xml/namespace/QName的类加载器(的实例),该类型具有不同的类对象
位于org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:158)
位于org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
位于org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
在org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)上
在org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:167)上
位于org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:142)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
位于org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
位于org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
位于org.jboss.web.tomcat.security.jaccontextvalve.invoke(jaccontextvalve.java:92)
位于org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
位于org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
位于org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
位于org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
位于java.lang.Thread.run(未知源)
原因:java.lang.reflect.InvocationTargetException
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:194)
位于org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:102)
... 还有27个
原因:java.lang.LinkageError:loader约束冲突:解析字段“NODE”时,引用类的类装入器(org/jboss/classloader/spi/base/BaseClassLoader的实例)javax/xml/xpath/XPathConstants,以及字段解析类型的类装入器(的实例),javax/xml/namespace/QName,该类型具有不同的类对象
位于org.apache.ibatis.parsing.XPathParser.evalNode(XPathParser.java:169)
位于org.apache.ibatis.parsing.XPathParser.evalNode(XPathParser.java:165)
位于org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:55)
位于org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:29)
位于org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:15)
在es.adif.sgmm.sc.srv.servicio.util.MyBatisUtils.getSqlMapper(MyBatisUtils.java:30)
在es.adif.sgmm.sc.srv.servicio.impl.RecepDAO.crearNotificacion(RecepDAO.java:30)
在es.adif.sgmm.sc.srv.servicio.impl.receptornotification.notificarReal(receptornotification.java:40)
... 33多
我在网上读了很多关于这样的错误的文章,但这让我不知所措。类
javax.xml.namespace.Qname
似乎有问题,它应该在两个不同的地方定义,但我不知道如何修复它


有人知道解决方案吗?

这可能有用。值得注意的是,加载类的顺序也是一个因素,而不仅仅是两个罐子中存在相同的类。

非常感谢您的回答,我会尝试一下,希望这能解决问题。
loader constraint violation: when resolving field "NODE" 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
org.apache.axis2.AxisFault: loader constraint violation: when resolving field "NODE" 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 org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:158)
 at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
 at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
 at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
 at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:167)
 at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:142)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
 at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
 at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
 at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
 at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
 at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:194)
 at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:102)
 ... 27 more
Caused by: java.lang.LinkageError: loader constraint violation: when resolving field "NODE" 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 org.apache.ibatis.parsing.XPathParser.evalNode(XPathParser.java:169)
 at org.apache.ibatis.parsing.XPathParser.evalNode(XPathParser.java:165)
 at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:55)
 at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:29)
 at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:15)
 at es.adif.sgmm.sc.srv.servicio.util.MyBatisUtils.getSqlMapper(MyBatisUtils.java:30)
 at es.adif.sgmm.sc.srv.servicio.impl.RecepDAO.crearNotificacion(RecepDAO.java:30)
 at es.adif.sgmm.sc.srv.servicio.impl.ReceptorNotificacion.notificarReal(ReceptorNotificacion.java:40)
 ... 33 more