我的任务是使用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);
}
}
...
Reading some stuff online,人们都在指责
jogl
,因为我在64位系统上运行,但是,我的构建路径中已经有必要的jar。此外,尝试在浏览器中显示上述URL会返回404页面,这使我认为这可能是原因URL只是格式化某些首选项的一种方式。由于我没有DocumentBuilderFactory.setFeature
的来源,所以看不到里面到底是什么。我的问题实际上是
jogl
还是其他问题? 最佳答案
这是某种类路径问题。 JVM尝试调用抽象方法(不允许)时,将抛出 AbstractMethodError
。 DocumentBuilderFactory.setFeature(String, boolean)
是在JavaSE 5中添加到DocumentBuilderFactory的抽象方法,因此针对J2SE 1.4.2版本编译的实现将没有该方法,并且在调用setFeature(String, boolean)
时会发生此错误。
您的类路径上可能有一个旧的XML库,该库返回了DocumetnBuilderFactory.newInstance()
的实例。本质上,JOGL可能不是问题,可能只是JOGL引入了一个旧的XML库作为依赖项。
关于java - 示例WorldWind应用程序启动时遇到AbstractMethodError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18616079/