43

Android「Google Maps Android API v2」のサンプルコードを動かそうとしています。プロジェクトがエラーなしでビルドされます。ただし、Galaxy Nexus (ラップトップに USB で接続) でアプリを実行しようとすると、アプリがすぐにクラッシュします。

  • AndroidManifest.xml に自分の Maps API キーを入力しました
  • 私はAndroid 4.1.2に対してビルドしました

これはロギングです:

Unable to resolve superclass of Lcom/example/mapdemo/BasicMapActivity; (66) 
Link of class 'Lcom/example/mapdemo/BasicMapActivity;' failed 
Could not find class 'com.example.mapdemo.BasicMapActivity', referenced from method com.example.mapdemo.MainActivity.<clinit> 
VFY: unable to resolve const-class 108 (Lcom/example/mapdemo/BasicMapActivity;) in Lcom/example/mapdemo/MainActivity; 
VFY: replacing opcode 0x1c at 0x000d 
Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/example/mapdemo/MainActivity; 
Class init failed in newInstance call (Lcom/example/mapdemo/MainActivity;) 
Shutting down VM 
threadid=1: thread exiting with uncaught exception (group=0x41ac9930) 
FATAL EXCEPTION: main 
java.lang.ExceptionInInitializerError
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1319)
at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NoClassDefFoundError: com.example.mapdemo.BasicMapActivity
at com.example.mapdemo.MainActivity.<clinit>(MainActivity.java:97)
... 15 more

これを解決する方法や、私が間違っている可能性のあるヒントはありますか?

4

8 に答える 8

77

非常に慎重にクリブシートに従ってください:
https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw

特に、次のことが必要だと思います。

  • 「google-play-services_lib」プロジェクトの実際のソースをインポートし、Androidライブラリとしてリンクします。
    • プロジェクト -> プロパティ -> Android -> ライブラリ、追加 -> google-play-services_lib (プロジェクトを右クリックして [プロパティ] を選択し、[Android] を選択します) でこれを行います。
    • プロジェクトの「Java Build Path」を介して依存プロジェクトとして追加しないでください。これは私にとってはうまくいきませんでした。
  • サンプルプロジェクトの「libs」フォルダに google-play-services.jar と android-support-v4.jar を追加し、「Build Path -> Configure Build Path -> Libraries」で「External External JARs」として追加します。 .

サンプル コードを使用しようとしたときに、あなたとまったく同じエラーが発生したため、この 2 番目の手順が必要であることがわかりました。私の実際のプロジェクトNoClassDefFoundErrorでは、最初のステップは回避するために必要でした。com.google.android.gms.R$styleable

また、サンプル コードが機能する前に、クリーン ビルドを実行し、(以前のテスト試行から) デバイスからアプリをアンインストールする必要がありました。

于 2012-12-05T23:41:47.633 に答える
26

Google による次のサンプル コードの指示に従います。

「4」セクションをスキップして、以下の手順に従ってください。

  • 「libs」という名前の新しいフォルダーをプロジェクトに追加します
  • google-play-services.jar フォームをコピーします。

    "android-sdk-folder\extras\google\google_play_services\libproject\google-play-services_lib\libs"

    「libs」フォルダーへ->このフォルダー内のこのjarを右クリック->ビルドパス->ビルドパスに追加。

  • android-support-v4.jar フォームをコピーします。

    「android-sdk-folder\extras\android\support\v4」

    「libs」フォルダーへ->このフォルダー内のこのjarを右クリック->ビルドパス->ビルドパスに追加。

「android-sdk-folder」は通常、「C:\Users\User_Name\android-sdks」のようになります。

于 2012-12-10T22:45:51.810 に答える
14

私は同じ問題を抱えていました。問題を解決するために次のことを行いました。

  1. プロジェクトの「プロパティ」に移動します。
  2. 「Javaビルドパス」を選択
  3. 「注文とエクスポート」タブを選択
  4. 選択したプロジェクトの「src」と「gen」のパスと依存関係がここに表示されます。

彼らがリストした順序は、最初に「src」、次に「gen」パスで、「gen」フォルダーが「src」の前にビルドされるように切り替えます

次に、リストされた各項目を「チェック」します

参照: Android の Java ライブラリのコードの NoClassDefFoundError

于 2013-03-29T18:56:33.637 に答える
2

これは、プロジェクトのインポート方法に関する多くの混乱が原因で発生します。ドキュメント https://developers.google.com/maps/documentation/android/intro#sample_code には、どの時点でも「プロジェクトをワークスペースにコピーする」を選択しないでください。サンプルを実行するには、これに固執する必要があります。Play サービスとサンプルにはこのオプションを選択しないでください。そのままにしておいてください。

両方をインポートしたら、次の点を確認してください。

  1. MainActivity プロジェクトを右クリックし、プロパティを選択します
  2. Android に移動し、google-play-services-lib の横に緑色のチェックマークが表示されていることを確認します (プレイ サービス ライブラリは jar として追加しないでください。代わりに、Android ライブラリとして追加する必要があります)。
  3. Java ビルド パスに移動し、ライブラリ セクションで外部 jar (android-support-v4.jar) をインポートします。
  4. [重要] Java ビルド パスの [注文とエクスポート] に移動し、android-support-v4.jar の横にチェックマークが付いていることを確認します (デフォルトでは発生しません。これが、言及したエラーが表示される理由です)。頂点で)
  5. 変更を行った後は、プロジェクトをクリーンアップしてビルドするようにしてください。これにより、機能するものを修正しようとすることはなくなりますが、単にプッシュされませんでした。
于 2013-06-09T17:42:08.023 に答える
1
  1. グーグルによる サンプルコードの指示に従ってください。
  2. そして、次のように Java ビルド パスを設定します。ここに画像の説明を入力
于 2013-09-20T07:14:01.240 に答える
0

私は同じ問題に直面し、解決できませんでした。最後に、別のマシンからサンプル プロジェクト フォルダーを取得し、それを自分のフォルダーにコピーして、別のマシンから取得した新しいプロジェクトを読み込みました。その後、すべてが正常に機能しています。2 つのサンプル プロジェクトを比較して問題を追跡しようとしましたが、できませんでした。とにかく、他のマシンから取得した新しいサンプル プロジェクトは正常に動作しています。

于 2013-04-23T11:50:03.777 に答える
0
  1. 新しいワークスペースで同じサンプル コードを試してください。

  2. サンプル マップ プロジェクトと google play services-lib プロジェクト (/extras/google/google_play_services/libproject/google-play-services_lib) をコピーして新しいワークスペースに貼り付けることもできます。

  3. その後、REQUIRED JAR FILE FROM SDK を忘れずに追加してください。(「android-support-v4.jar」は、「android-sdk」ディレクトリーの下の「/extras/android/compatibility/v4/android-support-v4.jar」にあります。)
于 2015-06-23T11:33:37.850 に答える