3

Eclipse Juno ADT バンドル + Eclipse 用 Google プラグインを使用して、Android 4+ 向けに開発しています。Google Calendar API を使用するには、Google アカウントにプログラムでログインする必要があります。このために、私はアカウントマネージャーを利用しています。次のエラーが表示されます。

05-05 13:28:55.605: E/AndroidRuntime(11186): FATAL EXCEPTION: main
05-05 13:28:55.605: E/AndroidRuntime(11186): java.lang.NoClassDefFoundError: com.google.android.gms.common.AccountPicker
05-05 13:28:55.605: E/AndroidRuntime(11186):    at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.newChooseAccountIntent(GoogleAccountCredential.java:171)
05-05 13:28:55.605: E/AndroidRuntime(11186): ...

これを引き起こすコードは次のとおりです。

GoogleAccountCredential credential;

credential = GoogleAccountCredential.usingOAuth2(this, CalendarScopes.CALENDAR);

chooseAccount();

private void chooseAccount() {

  startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);

}

解決策をstackoverflowで検索しました。libs ディレクトリには、Eclipse 用の Google プラグインを介してインポートした Eclipse 用のカレンダー ライブラリ ファイルが含まれています (認証などのライブラリも配置されます)。

android-support-v4.jar
google-api-client-1.14.1-beta.jar
google-api-client-android-1.14.1-beta.jar
google-api-services-calendar-v3-rev41-1.14.2-beta.jar
google-http-client-1.14.1-beta.jar
google-http-client-android-1.14.1-beta.jar
google-http-client-gson-1.14.1-beta.jar
google-http-client-jackson-1.14.1-beta.jar
google-http-client-jackson2-1.14.1-beta.jar
google-oauth-client-1.14.1-beta.jar
gson-2.1.jar
jackson-core-2.1.3.jar
jackson-core-asl-1.9.11.jar
jsr305-1.3.9.jar

ただし、これらには含まれていないようです

com.google.android.gms.common.AccountPicker

これをコードにインポートすると、コードのインポート行にエラーのフラグが立てられます。元気。このコードは、問題なく動作する Google カレンダー サンプルからコピーしました。

http://samples.google-api-java-client.googlecode.com/hg/calendar-android-sample/

そのコードには、次を除いてまったく同じライブラリがあります。

  1. カレンダー lib は rev41 ではなく rev33 です
  2. jackson および jackson-asl ライブラリがありません
  3. サンプル コードには存在するが、私のコードには存在しない各ライブラリ ファイルの .properties ファイル

したがって、これは問題ではありません。ただし、コードのインポート セクションを見ると、Google カレンダーのサンプル コードには次のように記述されています。

import com.google.android.gms.common.GooglePlayServicesUtil;

しかし、このコード行をコードに挿入しようとすると、インポート com.google.android.gms.common.GooglePlayServicesUtil を解決できないというエラーとしてタグ付けされます。

この郵便受け

java.lang.NoClassDefFoundError: com.google.android.gms.common.AccountPicker

彼らはできたと言います

import com.google.android.gms.common.AccountPicker;

しかし、どのライブラリから来たのか知りたいです。

一度に 1 つのファイルを調べて com.google.android.gms.common.* を含めることができるライブラリの元の Android カレンダー サンプルを調べてみましたが、見つかりませんでした。それはどのように可能ですか?

私は何を間違っていますか?

大変お世話になりました。

4

2 に答える 2

3

最近、同様の問題に遭遇しました。私のアプリ (まだ本番環境ではありません) は、呼び出し時に突然 (5 月の初めから) キャッチできない 'NoClassDefFoundError' エラーをスローし始めます。

GoogleAccountCredential.usingOAuth2(これ、DriveScopes.DRIVE_FILE)

方法。それはランダムに、通常は朝一番に起こっていました。Googleアカウントを再インストールすることで修正できました。ただし、本番環境には適したソリューションではありません。同じコードシーケンスで同じ問題を抱えていない別のアプリがあることに最終的に気付くまで、それを解決しようとしてイライラする数時間を費やしました. だから私はそれらの両方を比較し、「良い」ものは「パッケージエクスプローラー - >プロジェクト - >プロパティ - > Javaビルドパス」のエントリの順序が異なることに気付きました。

「android-support-v4.jar」の前に「google-play-services.jar」、

「悪い」ものはそれを逆にしたところ。そこで、シーケンスを切り替えて(ダイアログのUP、DOWNボタンを使用して)、問題を解決したようです。さらに別の WT... ? 一瞬!誰かこれについて意見がありますか?

于 2013-06-09T15:38:30.380 に答える
3

わかりました、私は何が欠けていたかを発見しました。

  1. Android SDK Services -> Extras -> Google Play services をダウンロードしたことを確認してください

  2. 次のリンクの指示に従って、google-play-services-lib ライブラリをプロジェクトに追加します。

http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject

よろしくお願いします

于 2013-05-05T13:05:56.733 に答える