Мне было поручено создать приложение с использованием API WorldWind и ознакомиться с API, я попытался запустить пример приложения HelloWorldWind. Когда я делаю, я получаю следующее сообщение об ошибке: стекПримеры приложений приложения WorldWind AbstractMethodError при запуске
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-битной системе, однако , У меня уже есть необходимые банки в моем пути сборки.
Кроме того, попытка URL, показанная выше в браузере, возвращает страницу 404, что заставляет меня думать, что это может быть причиной
URL-адрес - это просто способ отформатировать некоторые параметры. Поскольку у меня нет источника для DocumentBuilderFactory.setFeature
, я не вижу, что там испортило.
Является ли моя проблема на самом деле jogl
или что-то еще?
Я только что проверил тип класса, который вернулся из 'DocumentBuilderFactory.newInstance()', и это 'DocumentBuilderFactoryImpl'. Метод 'setFeature', по-видимому, реализован и, согласно [этому] (http://grepcode.com/file/repo1.maven.org/maven2/xerces/xercesImpl/2.11.0/org/apache/xerces/jaxp/ DocumentBuilderFactoryImpl.java # DocumentBuilderFactoryImpl.setFeature% 28java.lang.String% 2Cboolean% 29), там не должно быть ничего, что бросает в него «AbstractMethodError». – MBraedley
@MBraedley Вы должны проверить, какая версия xerces загружается. Вы можете сделать это, вызывая 'MyClass.class.getClassLoader(). GetResource (" org/apache/xerces/jaxp/DocumentBuilderFactoryImpl.class "); и печатает результирующий URL. Замените соответствующий класс для 'MyClass.class'. 'HelloWorldWind.class', вероятно, сделает. Надеюсь, вы можете проверить файл jar, указанный URL, чтобы определить, сколько ему лет. – Dev
Банку, которая используется, это тот, который поставляется с WorldWind, версия 2.5.0, поэтому, по-видимому, он должен работать. Я не вижу никаких указаний на форумах WorldWind, что это проблема. – MBraedley