我想在我的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