未找到XPathFactoryImpl错误(使用myBatis)

使用myBatis standAlone(Atlassian jira插件(OSGi)环境)

发生以下错误。

[INFO] [talledLocalContainer] org.apache.ibatis.exceptions.PersistenceException: [INFO] [talledLocalContainer] ### Error building SqlSession. [INFO] [talledLocalContainer] ### Cause: java.lang.RuntimeException: XPathFactory#newInstance() failed to create an XPathFactory for the default o bject model: http://java.sun.com/jaxp/xpath/dom with the XPathFactoryConfigurationException: javax.xml.xpath.XPathFactoryConfigurationException: java. util.ServiceConfigurationError: javax.xml.xpath.XPathFactory: Provider org.apache.xpath.jaxp.XPathFactoryImpl not found [INFO] [talledLocalContainer] ### Cause: java.lang.RuntimeException: XPathFactory#newInstance() failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp/xpath/dom with the XPathFactoryConfigurationException:javax.xml.xpath.XPathFactoryConfigurationException: java.util.ServiceConfigurationError: javax.xml.xpath.XPathFactory: Provider org.apache.xpath.jaxp.XPathFactoryImpl not found 

源代码

 static { try { // set SessionFactory if (MyBatisConnectionFactory.sqlSessionFactory == null) { MyBatisConnectionFactory.sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("/mybatisConfig.xml")); } } catch (final Exception e) { MyBatisConnectionFactory.LOGGER.error(e.getMessage()); } finally { } } 

添加xalan时,会发生以下错误。

 Caused by: java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to javax.xml.parsers.DocumentBuilderFactory 

Pure Java Application环境中未发生此错误。

我想知道为什么会出现这个错误

请帮帮我。

谢谢。

我有类似的错误,这个笨拙的东西, 在这里记录 ,修复它为我:

 -Djavax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom=com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl 

我在macos上使用这个java版本:

 java version "1.8.0_92" Java(TM) SE Runtime Environment (build 1.8.0_92-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode) 

来自-Djaxp.debug = 1的stderr帮助我找到了这个:

 JAXP: Looking up system property 'javax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom' JAXP: The property is undefined. 

所以我完全按照它的要求给出了它,并且它很开心,如此:

 JAXP: Looking up system property 'javax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom' JAXP: The value is 'com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl' JAXP: createInstance(com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl) JAXP: loaded com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl from jar:file:/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Hom e/jre/lib/rt.jar!/com/sun/org/apache/xpath/internal/jaxp/XPathFactoryImpl.class JAXP: factory 'com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl' was found for http://java.sun.com/jaxp/xpath/dom 

我很好奇:uri语法,因为以下工作没有:uri。 那么为什么XPath需要这个而其他人不需要呢?

 -Dcom.sun.org.apache.xml.internal.dtm.DTMManager=com.sun.org.apache.xml.internal.dtm.ref.DTMManagerDefault -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl