我正在尝试在IntelliJ中运行GWTTestCase。
添加GWT构面并指向gwt-2.8.2的安装后,我运行测试并得到:
[ERROR] Failure while parsing XML
org.xml.sax.SAXNotRecognizedException: Feature 'http://apache.org/xml/features/nonvalidating/load-external-dtd' is not recognized.
at org.apache.xerces.parsers.AbstractSAXParser.setFeature(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.setFeature0(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.setFeatures(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParserImpl(Unknown Source)
at org.apache.xerces.jaxp.SAXParserFactoryImpl.setFeature(Unknown Source)
at com.google.gwt.dev.util.xml.ReflectiveParser.createNewSaxParser(ReflectiveParser.java:61)
根据互联网,通过在类路径中添加或删除xercesImpl似乎可以解决类似的故障。就我而言,无论xercesImpl-2.11.0.jar是否在类路径上(对于我来说,都是通过常春藤),都可以得到此信息。在调试中,我发现它是从GWT安装位置的gwt-dev.jar中加载SAXParserFactoryImpl
等,并为GWT方面配置的。有趣的是,常春藤gwt-dev.jar没有这个。用xerces替换gwt-dev.jar而不用让我克服这个异常,但是现在HtmlUnit失败了,因为它确实需要xerces:
Exception in thread "htmlUnit client thread" java.lang.NoClassDefFoundError: org/apache/xerces/xni/XNIException
at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:271)
有什么想法可以使这项工作成功吗?
注意:我可以使用ant版本运行测试,但是运行整个套件非常慢。