【问题标题】:Bug with Eclipse + Processing 3.2.1 + UnfoldingMapsEclipse + Processing 3.2.1 + UnfoldingMaps 的错误
【发布时间】:2016-09-11 13:48:29
【问题描述】:

我下载了最新的 JOGL,Processing 3.2.1 并试图编译这段代码:

import de.fhpotsdam.unfolding.UnfoldingMap;
import de.fhpotsdam.unfolding.geo.Location;
import de.fhpotsdam.unfolding.providers.AbstractMapProvider;
import de.fhpotsdam.unfolding.providers.Google;
import de.fhpotsdam.unfolding.providers.MBTilesMapProvider;
import de.fhpotsdam.unfolding.providers.Microsoft;
import de.fhpotsdam.unfolding.providers.OpenStreetMap;
import de.fhpotsdam.unfolding.providers.Yahoo;
import de.fhpotsdam.unfolding.utils.MapUtils;
import processing.core.PApplet;

public class TwoMaps extends PApplet {

public UnfoldingMap map1;
public UnfoldingMap map2;

public static void main(String[] args) {
    PApplet.main("TwoMaps");


}

public void settings() {

    size(800, 600, P2D);

}



public void setup() {

    String mbTilesString = "blankLight-1-3.mbtiles";

    final boolean offline = false;

    this.background(200, 200, 200);

    AbstractMapProvider provider = new Microsoft.RoadProvider(); 
    int zoomLevel = 10;

    if (offline) {
        provider = new MBTilesMapProvider(mbTilesString);
        zoomLevel = 3;
    }

    map1 = new UnfoldingMap(this, 50, 50, 350, 500, provider);
    map2 = new UnfoldingMap(this, 425, 50, 350, 500, provider);

    map1.zoomAndPanTo(zoomLevel, new Location(32.9f, -117.2f));
    map2.zoomAndPanTo(zoomLevel, new Location(55.45f, 40f));

    MapUtils.createDefaultEventDispatcher(this, map1);
    MapUtils.createDefaultEventDispatcher(this, map2);

}

public void draw() {
    map1.draw();
    map2.draw();
}

}

然后我在控制台中收到这条消息,在互联网上找不到任何东西:

Unfolding Map v0.9.6
java.lang.RuntimeException: java.lang.NoSuchFieldError: quality
at processing.opengl.PSurfaceJOGL$2.run(PSurfaceJOGL.java:461)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoSuchFieldError: quality
at de.fhpotsdam.unfolding.mapdisplay.OpenGLMapDisplay.<init>(Unknown Source)
at de.fhpotsdam.unfolding.mapdisplay.MapDisplayFactory.getMapDisplay(Unknown Source)
at de.fhpotsdam.unfolding.UnfoldingMap.<init>(Unknown Source)
at de.fhpotsdam.unfolding.UnfoldingMap.<init>(Unknown Source)
at TwoMaps.setup(TwoMaps.java:47)
at processing.core.PApplet.handleDraw(PApplet.java:2387)
at processing.opengl.PSurfaceJOGL$DrawListener.display(PSurfaceJOGL.java:871)
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
at jogamp.opengl.GLAutoDrawableBase$2.run(GLAutoDrawableBase.java:443)
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:759)
at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:81)
at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:452)
at com.jogamp.opengl.util.FPSAnimator$MainTask.run(FPSAnimator.java:178)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)

但是,如果我不在 size() 方法中使用渲染 P2D,那么它可以工作,但效果不佳且速度慢,并且只显示一张地图。

但最有趣的是,如果我使用 Processing 2.2.1,其中 scetch 的基类是 java.Applet,那么代码即使在 size() 方法中使用 P2D 也可以工作。

AMD Mobility Radeon HD 5000 驱动程序是最新的。

【问题讨论】:

  • 正如 Kevin Workman 所说,您需要使用 Processing 2,或者给我们发送电子邮件以获取 Unfolding Maps for Processing 3 的测试版。
  • 谢谢。我想我会等待处理 3 的展开地图完成。你知道什么时候可以吗?谢谢。

标签: eclipse processing


【解决方案1】:

看起来展开地图与 Processing 3 不兼容。现在您将不得不坚持使用 Processing 2。

如果你真的、真的、真的需要使用 Processing 3,你可以在这里试试答案:Creating UnfoldingMap instance with java.lang.NoSuchFieldError: quality error

但您最好还是回到处理 2。

另一个注意事项:您根本不应该下载 JOGL。 Processing 附带它需要的 JOGL 版本。您应该使用该版本的 JOGL,而不是单独下载的较新版本。

【讨论】:

  • 非常感谢。我什至没有考虑过 UnfoldingMaps 0.9.6 和 Processing 3.2.1 的不兼容性。但我现在很有趣,我在哪里可以使用这样的带有地图的项目,使用 java Applets。我认为小程序已经死了,最新的浏览器不再支持小程序了。那么我在哪里可以使用这样的项目呢?非常感谢。
  • @Turtality 我不太确定你在问什么。是的,小程序几乎已经死了。您只能在可以保证特定浏览器和 Java 版本的环境中真正使用它们(这在您无法控制的计算机上很难做到)。但是您不必部署为小程序。您可以部署为可运行的 jar 或可执行文件,也可以尝试使用 web start。
  • 如果我正确理解了您的@Turtality,并且您想在浏览器环境中使用交互式地图,您只需使用任何其他非 Java 映射库,例如传单。 Unfolding 不适用于浏览器(即使它可以在您对小程序没问题的情况下使用),并遵循 Processing 的方法将其用于 a) 学习、b) 实验/原型/研究和 c) 安装/展览/其他环境,您完全控制。
  • @tnagel 问题是这些地图没有合并到处理中,而展开地图是。换句话说,您不能(轻松)编写与任何现有 JavaScript 地图库交互的处理草图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
  • 2016-02-07
  • 2018-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多