web-dev-qa-db-ja.com

Android-アクティビティをインスタンス化できません-ADT 22へのアップグレード後にClass not found例外が発生しました

最近、ADTをバージョン22にアップグレードしました。アップグレード後、最初にサポートライブラリ(別のライブラリプロジェクトに依存していた)でエラーが発生しました。サポートライブラリをプロジェクトにコピーしてすべてのプロジェクトをクリーンアップした後、アプリケーションを起動しようとすると、次のエラーが発生し続けます。

Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.d.d/com.d.d.MainActivity}: Java.lang.ClassNotFoundException: com.d.d.MainActivity

(実際のパッケージ名をcom.d.dに変更しました)

しかし、それがサポートライブラリの変更の原因であることを疑っているのは、次の行です。

at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:61)

以前にサポートライブラリをいじったことがあるとき、dex何かに関連する多くのエラーを受け取ったので、それは私を疑い続けます。

言うまでもなく、AndroidManifestにはアクティビティの正しいパスが含まれています。

ここでどんな助けでも大歓迎です。どうもありがとう。

17
MrByte

this の複製である可能性があります。

Project-> Properties-> Java Build Path-> Order&Export)に移動して、Android Private Librariesがプロジェクトおよび使用中の他のすべてのライブラリプロジェクトでチェックされます。すべてのプロジェクトを後でクリーンアップして、何が起こるのですか。

83
Krauxe

@Krauxeこの回答を提供していただきありがとうございます!

ただし、私はEclipseで少し調整されたアプローチを使用する必要がありました(バージョン:3.7.2)。

  1. プロジェクト-プロパティ-Javaビルドパス-注文とエクスポート
  2. チェックAndroid Private Libraries(使用済みライブラリプロジェクトの場合も)
  3. プロジェクト-クリーン...-すべてのプロジェクトをクリーン
6
droide_91

ここでは、ソースフォルダーとしてsrcフォルダーを追加する必要がありました。なんらかの理由でバインディングが消えました。

  1. Srcフォルダーを右クリックします。
  2. ビルドパス->ソースフォルダーとして使用
1
Julio Rodrigues

すべての回答を試しても問題が解決しない場合は、おそらくアクティビティ名がAndroidManifest.xmlのパッケージ名と一致していません。たとえば、このようなxml。

<activity
    Android:name="com.tony.HomeActivity"
    Android:screenOrientation="portrait" >
    <intent-filter>
        <action Android:name="Android.intent.action.MAIN" />
        <category Android:name="Android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

homeActivityは実際にはパッケージcom.tony.ui.HomeActivityにあります。

0
SalutonMondo

私も同じ問題を抱えていました。解決策は、出力フォルダーをbin/classesに変更することでした。

  1. プロジェクトを右クリック
  2. プロパティを選択
  3. Goto Java Build Path> Source
  4. デフォルトの出力フォルダを/ bin/classesに設定します

挨拶、マーティン

0
user3399247