当前位置: 首页 > 面试题库 >

示例WorldWind应用程序启动时遇到AbstractMethodError

葛霄
2023-03-14
问题内容

我的任务是使用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还是其他问题?


问题答案:

这是某种类路径问题。AbstractMethodError当JVM尝试调用抽象方法时(不允许)抛出该异常。DocumentBuilderFactory.setFeature(String, boolean)是在JavaSE 5中添加到DocumentBuilderFactory的抽象方法,因此针对J2SE
1.4.2版本编译的实现将没有该方法,并且在setFeature(String, boolean)调用它们时会发生此错误。

您的类路径上可能有一个旧的XML库,该库返回的实例DocumetnBuilderFactory.newInstance()。本质上,JOGL可能不是问题,可能只是JOGL引入了旧的XML库作为依赖项。



 类似资料:
  • 问题内容: 我有一个Java应用程序。 该应用程序具有一个设置,该设置决定该应用程序是否在启动时启动。 目前,我可以通过在“启动项目”文件夹中放置/删除快捷方式来实现此目的。 但是,我想知道是否有更好的方法来处理此行为。 编辑 是的,它是Windows。抱歉,之前没有清除该内容。 该应用程序具有一个用户可以在其中触发动作的UI,并且该应用程序在运行时会定期在后台运行一些任务。 @Peter,如何在

  • 我有一份Java申请。 应用程序有一个决定应用程序是否在启动时启动的设置。 目前,我通过在StartUp items文件夹中放置/删除快捷方式实现了这一点。 然而,我想知道是否有更好的方法来处理这种行为。 编辑 是的,是视窗。抱歉之前没有清除。 应用程序有一个UI,用户可以在其中触发操作,并且应用程序在运行时定期在后台运行一些任务。 @Peter,如何使用应用程序中的代码更改注册表?这种方法是否与

  • 我的Spring启动应用程序, 在获得Whitelabel错误页面后,我在我的一个控制器中映射了, 我映射了一个,出现以下异常:, 遵循User9123的解决方案,但是,我仍然得到下面的页面,

  • 启动spring boot应用程序时显示JAXB警告 我应该如何解决这个问题?

  • 问题内容: 我尝试使用范围类型APPLICATION和带有@ Create,@ Beg的方法来注释类,但这似乎不起作用。 我想要的是在应用程序启动时立即启动无限循环。 问题答案: 如果希望在初始化后立即执行方法,则可以使用以下注释:

  • 当我的应用程序启动时,将创建一个executor服务(在java.util.concurrent中使用Executors.NewFixedThreadPool(maxThreadNum))对象。当请求到来时,executor服务将创建线程来处理它们。 当应用程序启动时,它将在executorService池中创建200个线程。 只是想知道当应用程序启动时,这是一种正确的创建线程的方法吗?还是有更好