谷歌地图引擎java.lang.NoClassDefFoundError

时间:2016-01-01 03:18:25

标签: java google-app-engine

我想在我的java项目中使用谷歌地图引擎来获得两个地点之间的距离。我开发了一个hello world代码来测试引擎,但是当我运行我的项目时出现了奇怪的错误。

这是我的代码

import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.mapsengine.MapsEngine;
import com.google.api.services.mapsengine.MapsEngineRequestInitializer;
import com.google.api.services.mapsengine.model.Feature;
import com.google.api.services.mapsengine.model.FeaturesListResponse;
import com.google.api.services.mapsengine.model.GeoJsonPoint;

import java.io.IOException;

/** Java "Hello, world!" example using the client library */
public class ComputeDistance {

static final String SAMPLE_TABLE_ID = "12421761926155747447-06672618218968397709";
static final String PUBLIC_API_KEY = "YOUR_API_KEY_GOES_HERE";

public static void main(String[] args) throws Exception {
HttpTransport transport = new NetHttpTransport();
JsonFactory jsonFactory = new GsonFactory();

// This request initializer will ensure the API key is sent with every HTTP request.
MapsEngineRequestInitializer apiKeyInitializer =
    new MapsEngineRequestInitializer(PUBLIC_API_KEY);

MapsEngine engine = new MapsEngine.Builder(transport, jsonFactory, null)
    .setMapsEngineRequestInitializer(apiKeyInitializer)
    .setApplicationName("Google-MapsEngineSample/1.0")
    .build();

readFeaturesFromTable(engine);
 }

 public static void readFeaturesFromTable(MapsEngine me) throws IOException {
// Query the table for offices in WA that are within 100km of Perth.
FeaturesListResponse featResp =  me.tables().features().list(SAMPLE_TABLE_ID)
    .setVersion("published")
    .setWhere("State='WA' AND ST_DISTANCE(geometry,ST_POINT(115.8589,-31.9522)) < 100000")
    .execute();

for (Feature feat : featResp.getFeatures()) {
  System.out.println(
      "Properties: " + feat.getProperties().toString() + "\n\t" +
      "Name: " + feat.getProperties().get("Fcilty_nam") + "\n\t" +
      "Geometry Type: " + feat.getGeometry().getType());

  if (feat.getGeometry() instanceof GeoJsonPoint)  {
    GeoJsonPoint point = (GeoJsonPoint) feat.getGeometry();
    System.out.println("\t" +
        "Longitude: " + point.getCoordinates().get(0) + ", " +
        "Latitude: " +  point.getCoordinates().get(1));
  } else {
    System.out.println("Only points are expected in this table!");
    return;
  }
}
 }
}

这是错误:

 Exception in thread "main" java.lang.NoClassDefFoundError: com/google/api/client/googleapis/services/json/AbstractGoogleJsonClient
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2570)
at java.lang.Class.getMethod0(Class.java:2813)
at java.lang.Class.getMethod(Class.java:1663)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
 Caused by: java.lang.ClassNotFoundException:   com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 19 more

0 个答案:

没有答案