无法实例化应用程序 - ClassNotFoundException

时间:2013-07-31 08:49:47

标签: android

编辑:此问题尚未在其他建议的SO问题中得到解决

我在市场上有一个完整的应用程序超过一年,很少有崩溃报告。最近我将我的应用程序更改为一个库,以便它可以包含在多个不同的“包装器”项目中。这样我就可以轻松制作不同版本 - 免费,付费,非谷歌市场,有/无应用内购买等等。

新的“库+包装”应用似乎工作正常。我可以多次运行它,没有错误。但是后来一天之后(当大概是操作系统关闭了部分或全部应用程序的活动时)我试图运行它并报告

Unable to instantiate application com.mycompany.mygamelibrary.MyGameApplicationClass: java.lang.ClassNotFoundException: com.mycompany.mygamelibrary.MyGameApplicationClass

它找不到的类是程序启动时运行的第一个类MyGameApplicationClass - 它扩展了Application。这个类是库的一部分。

我怀疑两个清单文件中有一个出了问题。

包装器项目的清单包含行......

<application android:icon="@drawable/mygame_icon"
    android:screenOrientation="portrait" android:label="My Game Name"
    android:name="com.mycompany.mygamelibrary.MyGameApplicationClass">

任何可能出错的想法?​​

编辑:根据yorkw对this SO question的回答,该库被引用为“正确的方式”。

编辑:我现在无法重复崩溃:-(我不知道当应用程序一两天不使用时操作系统会做什么。

13 个答案:

答案 0 :(得分:17)

有两种可能性。你和我一样,你的清单文件中有拼写错误。让同事或朋友阅读它以确保名称正确。或者您没有正确引用该项目。

官方文档介绍了如何正确链接its documentation中的项目。

为什么它首先似乎工作,后来停止工作有点神秘。但是,我猜VM可能仍然已经准备好了必要的引用来解析库中的类。重新启动VM删除了所有这些引用并尝试解决它们是不成功的。

更新:关于OP中的修改:当您确认已正确引用其他项目时,可以检查项目是否包含在APK中,只是为了确定。您可以像任何其他存档一样重命名和打开APK(.rar适用于我)。有时,它发生在我身上,项目未正确包含在APK中。清理工作区通常可以解决问题,因此可以根据您使用的内容重新启动IDE。例如,要在Eclipse中手动执行清理,请使用Project->Clean...或通过右键单击项目来尝试Android Tools->Fix Project Properties

由于您似乎也通过重新启动设备解决了问题,因此可能是库未正确链接。一个我从未见过的问题,但作为一个非常常见的引用说:“你试过把它关掉再打开吗?”。

答案 1 :(得分:13)

对于Android Studio:

Build - &gt;的 Clean Project

修正了问题。

答案 2 :(得分:4)

您是否尝试在“主”项目中创建MyGameApplicationClass的新子类,并将其作为Application类在清单中设置?

答案 3 :(得分:3)

我在Android Studio 3.0 Canary 4中遇到了很多错误,我修复它们的方法是通过在应用程序名称中添加一些乱码来编辑AndroidManifest.xml。然后,我点击了构建。显然,出现了一大堆新的错误消息。我将名称改回原来的名称,构建应用程序,然后就跑了。

有时,我只是不知道......

编辑:切换时,我的笔记本电脑上的Android Studio 3.0 Canary 4上遇到了这个问题。我再次经历了更改AndroidManifest.xml文件的相同过程,以包含拼写错误,构建和更改。那不行。

然后我注意到即时运行仍然启用。进入设置(通过单击命令+,(逗号键))并键入&#34;即时运行&#34;,我能够禁用即时运行,构建应用程序,并且找不到类的错误。

修复[FOR ME]的步骤摘要

  1. 无效缓存/重启
  2. 清理项目
  3. 手动删除构建文件夹(需要在此项目的项目视图中)
  4. 对AndroidManifest.xml文件进行故意错误编辑,构建应用程序,观察错误,删除错误编辑并重新构建
  5. 禁用即时运行
  6. 同样,我并不是要暗示这会解决所有人的错误,但我现在已经在两台不同的机器(MacOS Sierra)上使用了这些步骤的某些组合,并且它已经为我解决了。希望能帮助到你。

答案 4 :(得分:1)

可能是它的构建路径配置问题。我做了以下事情来解决这个问题。

1.右键单击您的项目并转到Java Build Path。

2.单击“订购和导出”选项卡。

3.如果您已添加,请查看Android私有库和其他第三方库。

4.按下确定并清理项目。 我希望它能解决这个问题。

答案 5 :(得分:1)

一旦我收到相同的错误消息,但可能原因不一样。

我做了一段代码并且工作了一段时间,然后我想改进它并得到同样的错误而且我无法运行它。

我可以用

解决问题
  • 正确的构建路径顺序(我可以看到你已经这样做了)
  • 我检查了Order-Export选项卡android-suppor-v4.jar
  • 关键是Android SDK Managert-&gt;升级所有内容和(下一个)Eclipse-&gt;帮助 - &gt;检查更新。

在我升级到最新的android插件和SDK后,我的应用程序已编译并再次运行。

我希望这会对你有所帮助!

答案 6 :(得分:1)

我对此不太确定,但可能是您的系统的debug.keystore许可证有效期已过期,因为它仅有效365天。您只需要从计算机中删除debug.keystore。编译Android App时,Eclipse将自动生成debug.keystore。

答案 7 :(得分:1)

看到相同的消息......这次在Build Path中发现了MyApp / gen和MyApp / src的不同输出文件夹(由Maven集成引起)。

取消选中“允许源文件夹的输出文件夹”解决了这个问题。

答案 8 :(得分:1)

就我而言,应用程序ID 不匹配。这应该与下面的图片中所示相同......

<强>的AndroidManifest.xml

enter image description here

应用/的build.gradle

enter image description here

在这种情况下,您可以看到, applicationId 都与 com.mycompany.mygamelibrary

相同

答案 9 :(得分:1)

这个所有Process工作都为我解决了应用程序类的异常。

第1步:打开运行(窗口+ R)搜索 - &gt;预取删除所有文件(某些文件不是删除)

步骤2:打开运行(窗口+ R)搜索 - &gt; %temp%删除所有文件(某些文件不删除)

第3步:打开Android Studio - &gt;构建 - &gt;清洁项目

OR

选择文件&gt;无效缓存/重新启动&gt;从Android Studio工具栏中失效并重新启动。

OR

关闭并重新打开Android项目。

OR

重启系统

答案 10 :(得分:0)

我在Android应用程序中遇到了这个问题,该应用程序需要在Android Studio项目中的错误路径中创建的Application类。当我将类文件移动到正确的包时,它已被修复。

答案 11 :(得分:0)

我多次遇到此问题,两次都似乎是由某些即时运行功能引起的。

就我而言,从设备中删除该应用程序,然后再从Android Studio安装该应用程序即可解决此问题。

答案 12 :(得分:0)

我今天遇到了这个问题。该项目运行了一年多,但是今天它报告了此问题,并且无法在我的测试设备上进行调试。

我通过更新到最新的gradle版本来修复它。希望这可以解决您的问题。