3

Froyo を最小バージョン、Gingerbread をターゲット バージョンとしてアプリケーションを開発しています。したがって、マニフェストは次のことを示しています。

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10"/>

エミュレータと Gingerbread を搭載した Nexus One があり、アプリケーションは正しくデプロイおよびインストールされます。しかし、起動するとクラッシュし、ログにスローされるエラーは次のとおりです。

09-18 06:35:11.240: ERROR/AndroidRuntime(382): FATAL EXCEPTION: main
09-18 06:35:11.240: ERROR/AndroidRuntime(382): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.my.package/com.my.package.Dashboard}: java.lang.ClassNotFoundException: com.my.package.Dashboard in loader dalvik.system.PathClassLoader[/data/app/com.my.package-2.apk]
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.os.Looper.loop(Looper.java:130)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.ActivityThread.main(ActivityThread.java:3683)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at java.lang.reflect.Method.invokeNative(Native Method)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at java.lang.reflect.Method.invoke(Method.java:507)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at dalvik.system.NativeStart.main(Native Method)
09-18 06:35:11.240: ERROR/AndroidRuntime(382): Caused by: java.lang.ClassNotFoundException: com.my.package.Dashboard in loader dalvik.system.PathClassLoader[/data/app/com.my.package-2.apk]
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
09-18 06:35:11.240: ERROR/AndroidRuntime(382):     ... 11 more

はい、アクティビティ「ダッシュボード」はマニフェストで宣言されています。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.my.package"
      android:versionCode="1"
      android:versionName="1.0"
      android:installLocation="auto">

      <activity android:name=".Dashboard"
              android:label="@string/app_name"
              android:screenOrientation="portrait">

            <intent-filter>
                  <action android:name="android.intent.action.MAIN"/>
                  <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
      </activity>

      ...

では、この問題は何に関連しているのでしょうか?? これは私を夢中にさせています。

4

12 に答える 12

8

私はEclipse 4.2で開発する際にもこの問題を抱えていました。私のメイン アクティビティは AndroidManifest.xml ファイルによって参照され、正しいパッケージと名前が含まれていましたが、それでも読み込みに失敗しました。少しデバッグしてコメントアウトした後、主なアクティビティが実装していたインターフェイスが問題の原因であることがわかりました。このインターフェースは別のプロジェクトで定義されていますが、 Java Build Pathでそのプロジェクトを参照できませんでした。そのため、ビルドすると正しくビルドされますが、起動するとすぐに強制終了が発生し、この質問と同じエラーが発生しました。

これを修正するために、Android プロジェクトを右クリックしてJava Build Pathを選択し、「共通コード」プロジェクトを[プロジェクト] タブに追加してから、[注文とエクスポート] タブで同じプロジェクトのチェックボックスをオンにしました。その後、すべてが機能しました。

于 2012-07-15T16:15:26.157 に答える
3

私の解決策は Project --> Properties --> Java Build Path --> Order and Export でした。使用するエントリにチェックマークを付ける必要があります。しかし、Android.jarにチェックを入れると、「エラー1でDalvik形式への変換に失敗しました」と表示されることも経験しました

また、Android.xx を除くすべてのライブラリを削除し、プロジェクトでプロジェクトをクリーンアップします --> クリーンアップしてから、ライブラリを再度追加します (順番にチェックを入れてエクスポートすることを忘れないでください)。「Dalvik 形式への変換がエラーで失敗しました」 1」のこと。

もう 1 つチェックする必要がある場所は、Properties --> Java Compiler --> JDK Compliance です。

于 2012-12-04T09:00:01.430 に答える
2

記録として、これを引き起こす可能性のある別の単純な理由は、プロジェクトの開始時に見落とされている可能性があることですが、起動したいアクティビティにアクティビティが拡張されていないか、空のクラスなどである可能性があります.

于 2013-09-25T13:07:02.237 に答える
2

私にとっては、phonegap のアップグレード中 (1.4 から 1.8.1 へ) でした。ルート プロジェクトの.projectファイルを更新する必要がありました。新しいプロジェクトを作成し、新しいファイルを以前のファイルと比較します。

于 2012-06-26T09:26:46.313 に答える
2

マニフェスト ファイルでアクティビティのクラス名を修正することで、このエラーを修正できます。

于 2012-12-20T17:04:14.383 に答える
2

Javaビルドパスの注文とエクスポートの下にあるAndroidプライベートライブラリとAndroidの依存関係を確認することで問題を解決しました

于 2013-06-03T07:34:55.610 に答える
0

この投稿には、同様の質問があり、さまざまな解決策が考えられることがわかりました。ただし、私の場合、問題は Android プロジェクトの設定にありました。どういうわけか、プロジェクトの Java ビルド パスがソース フォルダーにリンクされていませんでした。それが、私のマニフェスト ファイルがアクティビティ クラスを見つけられなかった理由です。src フォルダーをリンクすることで、この問題を解決しました。これを行うには、プロジェクトの「プロパティ」->「Java ビルド パス」を右クリックします。次に、「ソース」タブを選択します。src フォルダーがここにリストされているかどうかを確認します。そうでない場合は、[フォルダーを追加...] をクリックして、プロジェクトの src フォルダーに移動します。

于 2014-05-07T21:48:57.110 に答える