简体   繁体   English

java.lang.IllegalAccessError:尝试访问字段com.google.api.client.googleapis.GoogleHeaders.userAgent

[英]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.

相关问题 maven java.lang.IllegalAccessError:试图访问方法 com.google.common.collect.MapMaker.makeComputingMap - maven java.lang.IllegalAccessError: tried to access method com.google.common.collect.MapMaker.makeComputingMap java.lang.IllegalAccessError:尝试访问方法com.google.common.collect.MapMaker.makeComputingMap(); 来自WeldMessageConveyor - java.lang.IllegalAccessError: tried to access method com.google.common.collect.MapMaker.makeComputingMap(); from WeldMessageConveyor java.lang.IllegalAccessError: 试图访问方法 - java.lang.IllegalAccessError: tried to access method java.lang.IllegalAccessError:尝试使用Selenium ChromeDriver访问方法com.google.common.util.concurrent.SimpleTimeLimiter。 - java.lang.IllegalAccessError: tried to access method com.google.common.util.concurrent.SimpleTimeLimiter with Selenium ChromeDriver Chrome with Java Netbeans和Maven项目:java.lang.IllegalAccessError:尝试访问方法com.google.common.collect.MapMaker.makeComputingMap - Netbeans and Maven Project: java.lang.IllegalAccessError: tried to access method com.google.common.collect.MapMaker.makeComputingMap java.lang.IllegalAccessError:尝试访问com.google.common.util.concurrent.SimpleTimeLimiter方法。(Ljava / util / concurrent / ExecutorService;)V [保留] - java.lang.IllegalAccessError: tried to access method com.google.common.util.concurrent.SimpleTimeLimiter.(Ljava/util/concurrent/ExecutorService;)V [on hold] Java Glassfish java.lang.IllegalAccessError:尝试访问glassfish 3.1.2.2上的方法com.sun.jna.Pointer - Java Glassfish java.lang.IllegalAccessError: tried to access method com.sun.jna.Pointer on glassfish 3.1.2.2 java.lang.IllegalAccessError:尝试访问方法com.dropbox.core.DbxRequestUtil.addAuthHeader - java.lang.IllegalAccessError: tried to access method com.dropbox.core.DbxRequestUtil.addAuthHeader 黄瓜java.lang.IllegalAccessError中的Spring错误:尝试访问类 - Spring error in Cucumber java.lang.IllegalAccessError: tried to access class java.lang.IllegalAccessError:尝试从类Entity访问字段ConcreteEntity.instance - java.lang.IllegalAccessError: tried to access field ConcreteEntity.instance from class Entity
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM