我正在使用Android 2.3.3和Google API开发地图应用程序。
问题出在下面的代码中:
GoogleHeaders headers = new GoogleHeaders();
headers.setApplicationName("My Sample Google App on Maps");
request.setHeaders(headers);
它射出以下错误,
E/AndroidRuntime(382): FATAL EXCEPTION: main
E/AndroidRuntime(382): java.lang.IllegalAccessError: tried to access field com.google.api.client.googleapis.GoogleHeaders.userAgent from class com.google.api.client.googleapis.GoogleHeaders
E/AndroidRuntime(382): at com.google.api.client.googleapis.GoogleHeaders.setApplicationName(GoogleHeaders.java:129)
E/AndroidRuntime(382): at com.example.main.MapActivity$2.initialize(MapCallActivity.java:292)
E/AndroidRuntime(382): at com.google.api.client.http.HttpRequestFactory.buildRequest(HttpRequestFactory.java:91)
E/AndroidRuntime(382): at com.google.api.client.http.HttpRequestFactory.buildGetRequest(HttpRequestFactory.java:120)
E/AndroidRuntime(382): at com.example.main.MapActivity.MyMethod(MapCallActivity.java:248)
E/AndroidRuntime(382): at com.example.main.MapActivity.myMethod2(MapCallActivity.java:172)
E/AndroidRuntime(382): at com.example.main.MapActivity.onCreate(MapCallActivity.java:108)
E/AndroidRuntime(382): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(382): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
E/AndroidRuntime(382): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
E/AndroidRuntime(382): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
E/AndroidRuntime(382): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
E/AndroidRuntime(382): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(382): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(382): at android.app.ActivityThread.main(ActivityThread.java:3683)
E/AndroidRuntime(382): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(382): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(382): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime(382): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime(382): at dalvik.system.NativeStart.main(Native Method)
请解释我因为我被困住而且无法超越这个。
使用过的API:
google-api-client-googleapis-1.4.1-beta.jar
google-http-client-1.8.3-beta.jar
google-http-client-android2-1.8.3-beta.jar
google-oauth-client-1.8.0-beta.jar
帮助将不胜感激!
答案 0 :(得分:0)
检查您是否设置了适当的权限。编译器认为您无权访问要修改的对象。 http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalAccessError.html
答案 1 :(得分:0)
我自己得到了解决方案。问题在于Googleapis-1.4.1-beta.jar导入,这是由于内部访问限制导致编译器无法更改数据的罪魁祸首。它正在GoogleHeaders.java中创建问题。
它通过需要访问编译器的setApplicationName方法设置userAgent变量。但是,现在修改如下。
以下是GoogleHeaders的新代码。希望它对所有这些用户都有帮助。
HttpHeaders headers = new HttpHeaders();
headers.setUserAgent("Searching Places..");
request.setHeaders(headers);
request.addParser(new JsonHttpParser(new JacksonFactory()));
完全删除GoogleHeaders使用情况,它可以像刀一样顺利运行。
干杯!