2012-04-12 3 views
0

私は、マップアプリケーションを開発するためにAndroid 2.3.3とGoogle APIを使用しています。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の使い方を完全に削除すると、ナイフとしてスムーズに動作します。

乾杯!

0

適切な権限が設定されているかどうかを確認してください。コンパイラは、変更しようとしているオブジェクトにアクセスできないと考えています。 http://docs.oracle.com/javase/7/docs/api/java/lang/IllegalAccessError.html

+0

ありがとうございます!私はそれをチェックした。このようなことを詳しく説明してくれますか? – curlyreggie

+0

投稿する前に確認しました。犯人がどこにあるかを知ることはできません。 – curlyreggie

関連する問題