3

我正在使用 Eclipse IDE 创建一个兼容 Android 2.2 及更高版本的 Android 应用程序。我重构了我的一项主要活动的名称。我的基本结构是我有一个伪主页活动,其中这个应用程序内的其他“应用程序”(实际上是活动)具有指向它们各自活动的图标。我有一个类,它最初是应用程序中这些分支之一的头活动,称为 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

重构名称将更改classjava 类中的名称,但不会更改manifest文件中的名称。

尝试更改类名AndroidManifest.xml,这将解决问题

于 2013-05-01T14:33:14.853 回答
0
  1. 您最初有一个文件 Activity.java,它什么也没做,只是指向 Activity_home.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 回答
0

有些事情你必须检查。那些是 :

  1. 从 menifest.xml 和 build.gradle 两个文件中检查您的应用程序的包名称。
  2. 使用完整路径检查清单活动名称。如果活动路径不正确,则更正它。
  3. 如果问题未解决,则执行 File--> Invalidate Cache / Restart 。希望问题能解决。

  4. 如果问题未解决,则删除构建文件夹并重建项目。现在你的问题就解决了。谢谢 :)

于 2017-09-16T08:16:25.413 回答