ОШИБКА GWT: java.lang.RuntimeException: отложенная привязка не удалась для 'com.google.gwt.maps.client.impl.MapImpl' - PullRequest
0 голосов
/ 14 марта 2011

Я получаю сообщение об ошибке ...

java.lang.RuntimeException: Deferred binding failed for 'com.google.gwt.maps.client.impl.MapImpl' (did you forget to inherit a
required module?).......Caused by: java.lang.IncompatibleClassChangeError: Found interface
com.google.gwt.core.ext.typeinfo.JClassType, but class was expected.....

Я включил gwt-maps.jar в путь сборки Java и добавил следующее в мой файл .gwt.xml:

inherits name="com.google.gwt.maps.GoogleMaps" and <br>
script src="http://maps.google.com/maps?gwt=1&amp;file=api&amp;v=2&amp;sensor=false" 

Мой исходный код приведен ниже.

package com.mymaps.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.maps.client.InfoWindow;
import com.google.gwt.maps.client.InfoWindowContent;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.control.LargeMapControl;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.maps.client.overlay.Marker;
//import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.RootPanel;

public class GWTMaps implements EntryPoint
{
    private MapWidget mapdd;

    public void onModuleLoad()
    {
        LatLng somewhereInTexas = LatLng.newInstance(30.000, -97.000);

        mapdd = new MapWidget(somewhereInTexas, 2);
        //map = new MapWidget();
        mapdd.setSize("500px", "500px");
        mapdd.addControl(new LargeMapControl());

        //final Marker marker = new Marker(somewhereInTexas);
        //mapdd.addOverlay(marker);

        final InfoWindow infoWin = mapdd.getInfoWindow();
        infoWin.open(mapdd.getCenter(), new InfoWindowContent("Deep in Texas..."));

        /*Timer t = new Timer()
        {
            public void run()
            {
                LatLng newAddress = LatLng.newInstance(18.000, 10.000);
                infoWin.close();
                marker.setVisible(false);
                marker.setLatLng(newAddress);
                marker.setVisible(true);
                map.getInfoWindow().open(newAddress, new InfoWindowContent("Somewhere in Africa..."));
                map.panTo(newAddress);
            }
        };

        t.schedule(6000);*/

        RootPanel.get("mapsTutorial").add(mapdd);
    }
}

1 Ответ

3 голосов
/ 13 апреля 2011

Это известная проблема с gwt-google-apis.Цитата из соответствующей проблемы :

В GWT 2.2 появилась двоичная несовместимость, которая вызывает проблемы при связывании с двоичными файлами JAR, скомпилированными с более старыми дистрибутивами GWT.

Обходные пути должны использовать более старую версию GWT или перекомпилировать gwt-maps.jar из исходного кода.

Кроме того, вы можете использовать один из банок, предоставленных комментаторами, или даже следующий метод, предоставленный Мэттом Мастраччи

...