我被分配创建一个使用WorldWind API的应用程序,并为了熟悉该API,我尝试运行“HelloWorldWind”示例应用程序。但是当我运行时,会得到以下错误堆栈:
Exception in thread "main" java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V
at gov.nasa.worldwind.util.WWXML.createDocumentBuilder(WWXML.java:61)
at gov.nasa.worldwind.util.WWXML.openDocumentStream(WWXML.java:236)
at gov.nasa.worldwind.util.WWXML.openDocumentStream(WWXML.java:223)
at gov.nasa.worldwind.util.WWXML.openDocumentFile(WWXML.java:175)
at gov.nasa.worldwind.util.WWXML.openDocument(WWXML.java:148)
at gov.nasa.worldwind.Configuration.loadConfigDoc(Configuration.java:131)
at gov.nasa.worldwind.Configuration.<init>(Configuration.java:108)
at gov.nasa.worldwind.Configuration.<clinit>(Configuration.java:76)
at gov.nasa.worldwindx.examples.HelloWorldWind.main(HelloWorldWind.java:
WWXML.createDocumentBuilder
的作用如下所述:public static DocumentBuilder createDocumentBuilder(boolean isNamespaceAware)
{
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setNamespaceAware(isNamespaceAware);
if (Configuration.getJavaVersion() >= 1.6)
{
try
{
docBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd",
false); // Not getting past here
}
catch (ParserConfigurationException e)
{ // Note it and continue on. Some Java5 parsers don't support the feature.
String message = Logging.getMessage("XML.NonvalidatingNotSupported");
Logging.logger().finest(message);
}
}
...
阅读一些在线材料,有人指责 jogl
,因为我在64位系统上运行,但是我的构建路径中已经有必要的jar文件。此外,在浏览器中尝试上面显示的URL会返回404页面,这让我认为可能是原因该URL只是一种格式化一些首选项的方法。由于我没有 DocumentBuilderFactory.setFeature
的源代码,所以我无法看到里面出了什么问题。
我的问题实际上与 jogl
有关,还是与其他什么有关?
DocumentBuilderFactory.newInstance()
返回的类类型,它是一个DocumentBuilderFactoryImpl
。显然已经实现了setFeature
方法,并且根据这里的说法,在其中不应该有任何抛出AbstractMethodError
的东西。 - MBraedleyMyClass.class.getClassLoader().getResource("org/apache/xerces/jaxp/DocumentBuilderFactoryImpl.class");
并打印结果URL来实现这一点。将MyClass.class
替换为相关的类,比如HelloWorldWind.class
可能适用。希望你能检查由URL指示的jar文件以确定其年代。 - Dev