[英]java.lang.IllegalAccessError: tried to access field com.google.api.client.googleapis.GoogleHeaders.userAgent
I'm using Android 2.3.3 and Google APIs for developing a Map application. 我正在使用Android 2.3.3和Google API来开发Map应用程序。
The problem is in the below code: 问题在下面的代码中:
GoogleHeaders headers = new GoogleHeaders();
headers.setApplicationName("My Sample Google App on Maps");
request.setHeaders(headers);
It shoots with the below error, 拍摄时出现以下错误,
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)
Please explain me as I'm stuck and not able to move beyond this. 请为我解释,因为我遇到了困难,无法继续前进。
Used APIs: 使用的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
Help would be appreciated! 帮助将不胜感激!
Check to see if you have set the appropriate permissions. 检查是否设置了适当的权限。 The compiler thinks you don't have access to the object you are trying to modify.
编译器认为您无权访问您要修改的对象。 http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalAccessError.html
http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalAccessError.html
I got the solution myself. 我自己找到了解决方案。 Problem was with the Googleapis-1.4.1-beta.jar import that was the culprit for which the compiler wasn't able to change data due to access restriction inside.
问题是Googleapis-1.4.1-beta.jar导入,这是导致编译器由于内部访问限制而无法更改数据的罪魁祸首。 And it was creating issues in GoogleHeaders.java.
它在GoogleHeaders.java中造成了问题。
It sets the userAgent variable via setApplicationName method that required access for the compiler. 它通过setApplicationName方法设置userAgent变量,该变量需要编译器的访问权限。 However, this is now modified as below.
但是,现在对此进行了如下修改。
Following is the new code for GoogleHeaders. 以下是GoogleHeaders的新代码。 Hope it helps for all such users.
希望它对所有此类用户有所帮助。
HttpHeaders headers = new HttpHeaders();
headers.setUserAgent("Searching Places..");
request.setHeaders(headers);
request.addParser(new JsonHttpParser(new JacksonFactory()));
Remove GoogleHeaders usage in full and it would run smoothly as a knife. 完全删除GoogleHeaders的用法,它将像刀子一样平稳运行。
Cheers! 干杯!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.