我正在運行Wildfly 8.2.0並執行一些XML配置文件分析。我的想法是,我將能夠使用捆綁的xercesImpl.jar來提供JAXP SAXParserFactoryImpl。ClassNotFound:在Wildfly 8.2中運行時的Xerces SAXParserFactoryImpl
當運行Wildfly之外的邏輯時,我能夠成功地使用SAXParserFactoryImpl進行解析。這家工廠是通過設置系統屬性中找到:
System.setProperty("javax.xml.parsers.SAXParserFactory",
"org.apache.xerces.jaxp.SAXParserFactoryImpl");
SAXParserFactory factory = javax.xml.parsers.SAXParserFactory.newInstance();
部署我的耳朵後,我收到以下錯誤:
...: javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found.
..
..
...: Caused by: java.lang.ClassNotFoundException: org/apache/xerces/jaxp/SAXParserFactoryImpl
..
..
明知Wildfly運行其自己的Xerces從wildfly /模塊/系統/層/base/org/apache/xerces/main/xercesImpl-2.9.1-jbossas2.jar,我曾嘗試以下:
[1]使用野花來Ÿ的xercesImpl-2.9.1-jbossas2.jar ......沒有變化
(來源:對於JBoss部署,structure.xml Wildfly文檔)
在JBoss中部署-structure.xml:
<jboss-deployment-structure>
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<deployment>
...
</deployment>
</jboss-deployment-structure>
EARContent:
lib/
...(removed xercesImpl.jar)...
META-INF/
application.xml // Information about EJB that uses xercesImpl.jar
jboss-deployment-structure.xml
[2]忽略Wildfly的xercesImpl-2.9.1-jbossas2.jar ......沒有變化
(來源:https://developer.jboss.org/thread/259010?start=0&tstart=0)
在JBoss中部署-structure.xml:
<jboss-deployment-structure>
<ear-subdeployments-isolated>true</ear-subdeployments-isolated>
<deployment>
<exclusions>
<module name="org.apache.xerces" />
</exclusions>
...
</deployment>
</jboss-deployment-structure>
EARContent:
lib/
xercesImpl.jar
...(many more jars)...
META-INF/
application.xml // Information about EJB that uses xercesImpl.jar
jboss-deployment-structure.xml
[3]明確包括Wildfly的Xerces作爲模塊...無變化
(來源:https://developer.jboss.org/thread/239969)
在JBoss中部署-structure.xml:
<jboss-deployment-structure>
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<deployment>
<dependencies>
<module name="org.apache.xerces" />
...
</dependencies>
</deployment>
</jboss-deployment-structure>
EARContent:
lib/
...(removed xercesImpl.jar)...
META-INF/
application.xml // Information about EJB that uses xercesImpl.jar
jboss-deployment-structure.xml
[4]爲JAXP解析器聲明Java屬性...沒有啓動時Wildfly變化
:
./standalone.sh -c standalone-full.xml -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl
在
獨立-full.xml
<system-properties>
<property name="javax.xml.parsers.SAXParserFactory" value="org.apache.xerces.jaxp.SAXParserFactoryImpl"/>
</system-properties>
(注:嘗試該屬性與嘗試[1],[2],[3] )
[5]添加的Xerces路徑JBoss的deplo yment結構......沒有變化
(來源:developer.jboss.org/message/717927#717927)
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<deployment>
<dependencies>
<system>
<paths>
<path name="org/apache/xerces/jaxp"/>
</paths>
</system>
...
</dependencies>
</deployment>
</jboss-deployment-structure>