3

Eclipse IDE を使用して、Android 2.2 以降に準拠した Android アプリケーションを作成しています。主な活動の 1 つの名前をリファクタリングしました。私の基本的な構造は、この 1 つのアプリ内の他の「アプリ」(実際にはアクティビティ) にそれぞれのアクティビティにつながるアイコンがある疑似ホームページ アクティビティがあることです。アプリ内のこれらのブランチの 1 つのヘッド アクティビティであったクラスがあり、それを Activity.java と呼びます。Activity.java は Activity_Home.java を指しているだけで何もしなくなったので、削除することにしました。Activity.java を削除して再構築し、Activity_Home.java を Activity.java にリファクタリングして再構築しました。NoClassDefFoundError を受け取りました:

05-01 10:13:12.609: E/AndroidRuntime(15635): FATAL EXCEPTION: main
05-01 10:13:12.609: E/AndroidRuntime(15635): java.lang.NoClassDefFoundError: Activity.java

それで、何かに役立つかもしれないと少し考えてから、名前を Activity_Home.java に戻しました。起動を試みる前に、完全にクリーニングして再構築します。CLASSPATH を確認し、.class ファイルの名前が正しく指定されていたにもかかわらず、エラーが発生し続けました。最終的に、なぜこれが機能したのかはわかりませんが、誰かがファイルを削除して再作成することで同様の問題を修正したことを読みました。私はそれをしました。

それはうまくいったようですが、理由がわかりません.Activity_Home.javaよりも深いすべてのファイル(たとえば、Activity_Camera.javaによって呼び出されるアクティビティがあります)が同じ問題を抱えています。

私は明らかに、すべての .java ファイルを削除して再作成する必要はありません。それで問題が解決したとしても、修正方法だけでなく、なぜこれが起こっているのかを知りたいです。

編集 1: マニフェスト ファイルの不一致を既に確認したことを忘れていました。この問題は、名前を変更していないクラスで発生しています。自動リファクタリングの名前変更の一部でしょうか? (純粋な憶測)

編集 2: SherlockListActivity の問題。私が行ったリファクタリングの後、APKが見つからないと言います。SherlockListActivity を削除すると、問題が解決します。

4

3 に答える 3

0
  1. 最初は、Activity_home.java を指すだけの Activity.java ファイルがありました。ポインティングから、Activity_home.javaを開くと思います。Activity を作成するたびに、そのエントリが AndroidManifest.xml ファイルに追加されます。ただし、アクティビティを削除すると、マニフェスト ファイルから削除されていないと思います。したがって、メイン ファイルを MainActivity.java に変更し、マニフェスト内の対応するエントリを次のように変更します。

他のアクティビティの名前とパッケージがマニフェストで正しいかどうかを確認するだけで、準備完了です。

 <activity android:name="com.raman.MainActivity">
      <intent-filter>
           <action android:name="android.intent.action.MAIN"/>
           <category android:name="android.intent.category.LAUNCHER">
        </intent-filter>
  </activity> 
于 2013-05-01T14:40:02.310 に答える