2012-04-12 38 views
0

我使用Android 2.3.3和Google API開發Map應用程序。java.lang.IllegalAccessError:試圖訪問com.google.api.client.googleapis.GoogleHeaders.userAgent字段

問題出在下面的代碼:

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

我自己得到了解決方案。導致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的用法,它可以像刀子一樣順暢地運行。

乾杯!

相關問題