[解決済み] Android Activity ClassNotFoundException - いろいろ試しましたが見つかりません。
質問
アプリをフレームワーク ライブラリとアプリケーションにリファクタリングしたところ、エミュレーターでアプリを起動しようとすると、次のようなエラー スタック トレースが表示されます。
06-02 18:22:35.529: E/AndroidRuntime(586): FATAL EXCEPTION: main
06-02 18:22:35.529: E/AndroidRuntime(586): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.matthewrathbone.eastersays/com.matthewrathbone.eastersays.EasterSimonSaysActivity}: java.lang.ClassNotFoundException: com.matthewrathbone.eastersays.EasterSimonSaysActivity in loader dalvik.system.PathClassLoader[/data/app/com.matthewrathbone.eastersays-1.apk]
06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.os.Handler.dispatchMessage(Handler.java:99)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.os.Looper.loop(Looper.java:123)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread.main(ActivityThread.java:4627)
06-02 18:22:35.529: E/AndroidRuntime(586): at java.lang.reflect.Method.invokeNative(Native Method)
06-02 18:22:35.529: E/AndroidRuntime(586): at java.lang.reflect.Method.invoke(Method.java:521)
06-02 18:22:35.529: E/AndroidRuntime(586): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-02 18:22:35.529: E/AndroidRuntime(586): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-02 18:22:35.529: E/AndroidRuntime(586): at dalvik.system.NativeStart.main(Native Method)
06-02 18:22:35.529: E/AndroidRuntime(586): Caused by: java.lang.ClassNotFoundException: com.matthewrathbone.eastersays.EasterSimonSaysActivity in loader dalvik.system.PathClassLoader[/data/app/com.matthewrathbone.eastersays-1.apk]
06-02 18:22:35.529: E/AndroidRuntime(586): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
06-02 18:22:35.529: E/AndroidRuntime(586): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
06-02 18:22:35.529: E/AndroidRuntime(586): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
06-02 18:22:35.529: E/AndroidRuntime(586): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
06-02 18:22:35.529: E/AndroidRuntime(586): ... 11 more
通常、これはマニフェストファイルが何らかの形で間違っていることを意味しますが、私は思いつく限りのことをすべてダブルチェックしました。
これが私のアクティビティクラスです。
package com.matthewrathbone.eastersays;
import android.os.Bundle;
import com.rathboma.simonsays.Assets.Season;
import com.rathboma.simonsays.SeasonPicker;
import com.rathboma.simonsays.SimonSaysActivity;
public class EasterSimonSaysActivity extends SimonSaysActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
@Override
public SeasonPicker getSeasonPicker() {
return new SeasonPicker(){
@Override
public Season getSeason() {
// TODO Auto-generated method stub
return Season.EASTER;
}
};
}
}
ご覧の通り、マニフェストに正しく記載されています。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.matthewrathbone.eastersays"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".EasterSimonSaysActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
私はこれを修正する方法を知らないので、どんな助けでも感謝します。私は、この特定の動作を見ることなく、SO上の多くの同様の質問をスキャンしてきました。
より多くの情報。
- 生成された APK の内部を確認したところ、このクラスには、次のエントリがありました。 class.dex ファイルにエントリがあります。
- でプロジェクトのクリーニング/ビルドを試みました。 エクリプス
- APK のコピーがない、まったく新しいデバイス イメージを使用しようとしました。 APK のコピーをすでに持っていない、まったく新しいデバイス イメージを使用してみました。
- ライブラリ プロジェクトを に変更し、アンドロイドのプロジェクトに戻しましたが、違いはありません。 違いはありません。
- マニフェストに抽象的なSimonSaysActivityを追加しても、違いはありません。
- すべての依存関係をアンドロイド ライブラリ プロジェクトにして、それらが必要とするアンドロイド バージョンを同期させてみましたが、役に立ちませんでした。
解決策が見つかりました (下記参照)。回答やコメントを投稿してくださったみなさん。問題を解決するのを助けてくれてありがとうございます。
SDK ツールのアップグレードによって導入されたようです。このリンクは、コメント欄の @Nick に感謝します。 http://iqadd.com/item/noclassdeffounderror-adt-fix
どのように解決するのですか?
私は自分のプロジェクトでしばらく遊びましたが、あなたの問題を再現することができ、私のメイン プロジェクトを実行しようとすると、まったく同じ例外スタック トレースが表示されました。
私が思ったとおり、Android メイン プロジェクトで Android ライブラリ プロジェクトをどのように参照するか、簡単な Eclipse の構成設定がすべてです。
間違った方法。
メインプロジェクトを右クリックし
Properties -> Java Build Path -> Projects -> Add...
で、Android library Project を Android main project のビルドパスに依存プロジェクトとして追加するのですが、うまくいきません。必要なAndroid関連リソースがすべてメインプロジェクトで定義されている場合、コンパイル時にエラーは発生しませんが、アプリケーションを実行すると、質問で説明したような例外が発生します。
正しい方法です。
メインプロジェクトを右クリックし
Properties -> Android
を選択し、ライブラリセクションで、Android ライブラリプロジェクトをここに追加します。公式開発ガイドを見る
ライブラリプロジェクトを参照する
. これで、すべての問題が解決するはずです。また、実際のAndroidライブラリプロジェクトを参照するには、相対パスを使用する必要があることに注意してください。
ライブラリプロジェクト - 開発の考慮事項
.
お役に立てれば幸いです。
関連
-
実行中にEclipseがポップアップする A Java Exception has occurred
-
javaの非静的メソッドを静的に参照することができない
-
代入の左辺は変数でなければならない 解答
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] Androidのローテーションでアクティビティを再開する
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み] アプリケーションのインスタンス化ができない com.android.tools.fd.runtime.BootstrapApplication ?Android
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
プロジェクトの依存関係を解決できない。
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
無効な文字定数
-
コンストラクタDate()が未定義である問題
-
org.xml.sax.SAXParseExceptionのエラー解決方法
-
htmlとwordの相互変換の実装(画像あり)
-
Zipファイルの圧縮・解凍にantを使用する
-
[解決済み】ADT22へのアップグレード後、ライブラリがAPKに追加されなくなった。
-
[解決済み] EclipseのAndroidプロジェクトにライブラリ/JARを追加する