Моя цель - получить информацию о широте и долготе по поисковому адресу; например, «Париж» - это элемент поиска, а Google API дает мне широту и долготу на карте Google.
Я использую Java, EJB, JSF и JBoss.
Я пытался сделать EJB, код можно увидеть ниже:
package service;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.maps.GeoApiContext;
import com.google.maps.GeocodingApi;
import com.google.maps.GeocodingApiRequest;
import com.google.maps.errors.ApiException;
import com.google.maps.model.GeocodingResult;
import javax.ejb.Stateless;
import java.io.IOException;
@Stateless
public class PlaceService {
public String testPlacement() throws InterruptedException, ApiException, IOException {
GeoApiContext context = new GeoApiContext.Builder()
.apiKey("AI.....")
.build();
GeocodingResult[] results = new GeocodingResult[0];
GeocodingApiRequest req = GeocodingApi.newRequest(context).address("Paris");
results = req.await();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
return gson.toJson(results[0].addressComponents);
}
}
А это мои зависимости от Maven:
<dependency>
<groupId>com.google.maps</groupId>
<artifactId>google-maps-services</artifactId>
<version>0.9.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId> gson</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.9.1</version>
</dependency>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>converter-moshi</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.squareup.moshi</groupId>
<artifactId>moshi</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>1.13.0</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>logging-interceptor</artifactId>
<version>3.9.1</version>
</dependency>
Это дает мне эти строки кодов ошибок:
ERROR [stderr] (Rate Limited Dispatcher) Exception in thread "Rate Limited Dispatcher" java.lang.AbstractMethodError: com.google.maps.internal.OkHttpPendingResult$1.onResponse(Lokhttp3/Response;)V
ERROR [stderr] (Rate Limited Dispatcher) at okhttp3.RealCall$AsyncCall.execute(RealCall.java:133)
ERROR [stderr] (Rate Limited Dispatcher) at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:33)
ERROR [stderr] (Rate Limited Dispatcher) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
ERROR [stderr] (Rate Limited Dispatcher) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
ERROR [stderr] (Rate Limited Dispatcher) at java.lang.Thread.run(Thread.java:748)