美国宇航局Worldwind:你如何解决这些奇怪的运行时异常?

时间:2011-04-13 16:41:17

标签: java configuration runtime worldwind

Nasa Worldwind SDK有一些我希望运行的示例。我尝试运行SDK中提供的示例有两种方法:

  1. 使用整个SDK源文件夹创建Eclipse项目。
    • 指向所有worldwind依赖项(* .jar和* .dll文件)
    • 转到包含示例的文件夹:src \ gov \ nasa \ worldwind \ examples。
    • 运行示例ApplicationTemplate.java main。
  2. 创建一个空的Eclipse项目。
    • 指向所有worldwind依赖项(* .jar和* .dll文件)
    • 指向worldwind.jar
    • 然后将examples文件夹复制到我的Eclipse项目中。
    • 将列为gov.nasa.worldwind.examples的所有包重构为示例。
    • 运行示例ApplicationTemplate.java main。
  3. 当我选择(1.)时,我成功编译/运行没有错误。

    当我选择(2.)时,我成功编译但得到运行时错误:

    Apr 13, 2011 12:18:35 PM gov.nasa.worldwind.WorldWind createComponent
    SEVERE: Exception while creating World Wind component gov.nasa.worldwind.cache.BasicDataFileStore
    Apr 13, 2011 12:18:35 PM gov.nasa.worldwind.WorldWind createConfigurationComponent
    SEVERE: Unable to create class for configuration key gov.nasa.worldwind.cache.BasicDataFileStore
    Exception in thread "main" java.lang.ExceptionInInitializerError
        at gov.nasa.worldwind.awt.WorldWindowGLCanvas.<init>(Unknown Source)
        at Main2.main(Main2.java:15)
    Caused by: java.lang.IllegalStateException: Unable to create class for configuration key gov.nasa.worldwind.cache.BasicDataFileStore
        at gov.nasa.worldwind.WorldWind.createConfigurationComponent(Unknown Source)
        at gov.nasa.worldwind.WorldWind.initialize(Unknown Source)
        at gov.nasa.worldwind.WorldWind.<init>(Unknown Source)
        at gov.nasa.worldwind.WorldWind.<clinit>(Unknown Source)
        ... 2 more
    Caused by: gov.nasa.worldwind.exception.WWRuntimeException: Exception while creating World Wind component gov.nasa.worldwind.cache.BasicDataFileStore
        at gov.nasa.worldwind.WorldWind.createComponent(Unknown Source)
        ... 6 more
    Caused by: java.lang.NullPointerException
        at gov.nasa.worldwind.cache.BasicDataFileStore.<init>(Unknown Source)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.Class.newInstance0(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        ... 7 more
    

    由于许可和配置管理问题,我强烈希望选择选项(2.)。 有谁知道如何解决上面看到的这些运行时错误?

2 个答案:

答案 0 :(得分:3)

好的..这些是 Windows 环境下的 Eclipse 项目步骤:

  1. 创建一个新的 Eclipse 项目(空白 项目很好,只要它有 src文件夹)
  2. 在此下创建lib文件夹 项目(在根本上) 项目文件夹)
  3. 将所需的库和DLL放入 lib文件夹:gluegen-rt.jar, jogl.jar, worldwind.jar, jogl.dll, gluegen-rt.dll, jogl_awt.dll, jogl_cg.dll
  4. 复制样本HelloWorlWind.java 进入src文件夹
  5. lib文件夹中的所有JAR添加到 Referenced Libraries树 右键单击每个罐子 选择Build Path > Add to Build Path
  6. 右键点击中的jogl.jar Referenced Libraries树和。{ 选择Build Path > Configure Build Path。它会弹出Properties 对话框
  7. Properties对话框中,转到 Libraries tab并扩展 jogl.jar
  8. 选择Native library location和 点击右侧的Edit按钮。它 将弹出Native Library Folder Configuration对话框。
  9. lib文件夹设置为位置 点击Workspace...的路径 按钮。
  10. 然后,运行HelloWorlWind.java。它将毫无例外地展示辉煌的Worldwind Earth!

    请注意:关闭GUI窗口后,一些Worldwind示例应用程序不会终止JVM。

    要使ApplicationTemplate.java起作用,请确保复制所需的依赖项:

    • ClickAndGoSelectListener.java
    • LayerPanel.java

答案 1 :(得分:1)

我完全按照你在选项2中描述的那样做没有问题,它运行正常。使用新下载的WorldWind Java源代码副本时,应在使用WorldWind.jar文件之前执行Ant构建。 WorldWind.jar文件并不总是最新的,并且在使用时可能会导致冲突。

基本上你从行动中描述的是:它在使用源代码时起作用,并且在使用编译代码时失败。