2012-04-12 4 views
0

Ich verwende Android 2.3.3 und Google APIs für die Entwicklung einer Kartenanwendung.java.lang.IllegalAccessError: Ich versuchte auf das Feld zuzugreifen com.google.api.client.googleapis.GoogleHeaders.userAgent

Das Problem ist in dem folgenden Code:

GoogleHeaders headers = new GoogleHeaders(); 
headers.setApplicationName("My Sample Google App on Maps"); 
request.setHeaders(headers); 

Er schießt mit den unten stehenden Fehlern,

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) 

Sie mich bitte erklären, wie ich bin stecken und nicht in der Lage, darüber hinaus zu bewegen.

Gebrauchte APIs:

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 

Hilfe würde geschätzt!

Antwort

0

Ich habe die Lösung selbst. Problem war beim Googleapis-1.4.1-beta.jar-Import, bei dem der Compiler aufgrund von Zugriffsbeschränkungen die Daten nicht ändern konnte. Und es verursachte Probleme in GoogleHeaders.java.

Sie legt die Variable userAgent über die Methode setApplicationName fest, die den Zugriff für den Compiler erforderte. Dies wird jedoch wie folgt geändert.

Im Folgenden finden Sie den neuen Code für GoogleHeaders. Hoffe es hilft für alle diese Benutzer.

HttpHeaders headers = new HttpHeaders(); 
headers.setUserAgent("Searching Places.."); 
request.setHeaders(headers); 

request.addParser(new JsonHttpParser(new JacksonFactory())); 

entfernen GoogleHeaders Nutzung vollständig und es würde glatt wie ein Messer laufen.

Prost!

0

Überprüfen Sie, ob Sie die entsprechenden Berechtigungen festgelegt haben. Der Compiler denkt, dass Sie keinen Zugriff auf das Objekt haben, das Sie ändern möchten. http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalAccessError.html

+0

Danke! Ich habe nachgeschaut. Kannst du mir helfen, dieses Zeug herauszuarbeiten? – curlyreggie

+0

Ich habe es geprüft, bevor ich das gepostet habe. Nicht in der Lage herauszufinden, wo der Täter ist. – curlyreggie