在导入GWT中的Gears API时找不到org.apache.xerces.jaxp.SAXParserFactoryImpl

8

我使用Eclipse创建了一个GWT项目,一切都很完美(我能够在Hosted Mode和Google App Engine上运行它),直到我尝试导入Google Web Toolkit的Gears API。在我的Java源文件中添加以下行后:

import com.google.gwt.gears.client.geolocation.Geolocation;

当我尝试编译时,出现以下错误:

19-Jun-2009 3:36:09 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: failed com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@1c7d682{/,C:\Documents and Settings\Geoff Denning\workspace\TaskPath\war}
javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found

我已经将gwt-gears.jar文件添加到我的\war\WEB-INF\lib目录中,并且我已经在Eclipse中引用它,如下所示:

Java Build Path in Eclipse

我甚至已经打开了gwt-gears.jar文件并确认org/apache/xerces/jaxp/SAXParserFactoryImpl.class确实存在。有人能指点一下我为什么会出现上述错误吗?

1
你使用的Java版本是什么?最近是否将版本从1.4更改为1.5? - Rahul
6个回答

5

检查Xerces是否存在于以下位置:

$JAVA_HOME/lib/endorsed

听起来像是Java 5的问题。还要检查Java系统属性:
javax.xml.parsers.SAXParserFactory

应该是这样的:

org.apache.xerces.jaxp.SAXParserFactoryImpl

如果不是这样的话,那就是你的问题了,请确保设置系统属性。

实际上,如何做到这一点? - BicaBicudo

2
显然,这是jre 1.5中的一个错误。我通过将Eclipse中的默认JRE从1.5.0_06切换到1.6.0_03来解决了这个问题,如下所示:

Eclipse Installed JREs

感谢JonRahul为我指明了正确的方向。

1
这种情况我也遇到过。我的工作空间里有冲突的JAR文件。我删除了其中一个,问题就迎刃而解了。错误信息并没有很好地指出错误的根源。

在我的情况下,经过几天的奋斗后,我发现在其中一个使用库中有一个xercesImpl-2.8.1.jar文件中的SAXParserFactoryImpl类。我只需要将此jar复制到WEB-INF / lib中,并将其添加到.settings \ com.google.appengine.eclipse.core.prefs中即可。现在完美解决问题。 - eskalera

1

我的SAXParserFactoryImpl问题是由于我在启动类路径中有gwt-gadgets.jar。将此JAR从启动类路径中移除解决了我的问题。基本上,您必须从构建路径(用户库)中删除任何包含SAXParserFactoryImpl类的JAR


0

移除 $JAVA_HOME/jre/lib/jaxp.properties 可以解决这个问题。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接