2

我正在使用Eclipse IDE创建符合Android 2.2和更高版本的Android应用程序。我重构了我主要活动之一的名字。我的基本结构是,我有一个伪主页活动,在这个应用程序内的其他“应用程序”(实际上是活动)具有导致其各自活动的图标。我有一个类,最初是应用程序中这些分支之一的头部活动,称之为Activity.java。 Activity.java最终只是指向了Activity_Home.java并且不再做任何事情,所以我决定摆脱它。我删除了Activity.java,重建,然后重构Activity_Home.java到Activity.java,重建。有一个NoClassDefFoundError的:重构名称后的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:忘记提及我已经检查了Manifest文件的不一致性。现在这个问题正在发生,我甚至没有重新命名。可能是自动重构重命名的一部分? (纯粹推测)

编辑2:问题与SherlockListActivity。说不管我重构了什么,它都找不到APK。当我删除SherlockListActivity时,它修复了我的问题。

+1

如果你使用eclipse,请尝试清洁项目。项目 - >清除。有时这个问题是由这个问题解决的。 – 2013-05-01 14:28:34

+0

尝试一下'Markers'视图(标签),在那里,你可以检查所有错误和警告。 Android操作系统非常擅长检测运行时潜在的问题。 – gaborsch 2013-05-01 14:35:58

回答

0

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

尝试在AndroidManifest.xml也改变类的名称,这将解决这个问题

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> 
0

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

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

  4. 如果问题不解决,然后删除构建文件夹并重建项目。现在你的问题将解决。 谢谢:)