8

私は 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 ページが返されるため、これが原因である可能性があると思われます。のソースを持っていないので、DocumentBuilderFactory.setFeature何がおかしいのかわかりません。

私の問題は実際にはjogl、または何か他のものですか?

4

2 に答える 2

14

これはある種のクラスパスの問題です。AbstractMethodErrorJVM が (許可されていない) 抽象メソッドを呼び出そうとするとスローされます。DocumentBuilderFactory.setFeature(String, boolean)は、JavaSE 5 で DocumentBuilderFactory に追加された抽象メソッドであるため、J2SE 1.4.2 バージョンに対してコンパイルされた実装にはそのメソッドがなくsetFeature(String, boolean)、それらで が呼び出されたときにこのエラーが発生していました。

のインスタンスを返す古い XML ライブラリがクラスパスにある可能性がありますDocumetnBuilderFactory.newInstance()。問題は JOGL 自体にあるのではなく、JOGL が古い XML ライブラリを依存関係として持ち込んだだけかもしれません。

于 2013-09-04T14:43:26.890 に答える