【问题标题】:unable to instantiate application - ClassNotFoundException无法实例化应用程序 - ClassNotFoundException
【发布时间】:2013-07-31 16:51:54
【问题描述】:

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

我的应用程序在市场上运行了一年多,但几乎没有崩溃报告。然后最近我将我的应用程序更改为一个库,以便它可以包含在多个不同的“包装器”项目中。这样我就可以轻松制作不同的版本——免费、付费、非谷歌市场、有/没有应用内购买等。

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

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

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

我怀疑这两个清单文件之一中有一些愚蠢的东西。

wrapper 项目的清单包含这些行...

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

有什么想法会出错吗?

编辑: yorkw 对this SO question 的回答所定义的“正确方式”引用了该库。

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

【问题讨论】:

  • 另一个问题的问题症状不太一样。勾选的答案也有 3 票反对。
  • 你试过 android:name="MyGameApplicationClass" 吗?
  • 你看到这个问题的公认答案了吗:stackoverflow.com/questions/4880489/…?你能发布更多信息吗?它现在一直失败吗?

标签: android


【解决方案1】:

可能是构建路径配置问题。我做了以下解决问题。

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

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

3.如果您已添加,请检查 Android Private Libraries 和其他第 3 部分库。

4.按确定并清理项目。 希望能解决问题。

【讨论】:

  • “Android Private Libraries”已在库和包装器项目中检查。
【解决方案2】:

有两种可能。要么你像我一样,在你的清单文件中有拼写错误。请同事或朋友阅读以确保名称正确。或者你没有正确引用项目。

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

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

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

由于您似乎也通过重新启动设备解决了该问题,因此可能是库链接不正确。一个我自己从未见过的问题,但正如一句非常常见的名言所说:“您是否尝试过将其关闭再打开?”。

【讨论】:

  • 感谢-为我工作,更新了我的 ADT,重新引用了 google play lib 并重新导出了 apk。
【解决方案3】:

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

【讨论】:

  • 这是我会尝试的,而且因为您使用完全限定名称来引用您的应用程序类,请确保您没有在清单文件中定义清单节点的包属性
【解决方案4】:

曾经我有同样的错误信息,但可能原因不一样。

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

我可以用

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

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

希望对你有帮助!

【讨论】:

    【解决方案5】:

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

    【讨论】:

    • 我一直为我制作的每个密钥库设置 1000 年的持续时间,但感谢您的建议。
    【解决方案6】:

    看到相同的消息...这次它是构建路径中 MyApp/gen 和 MyApp/src 的不同输出文件夹(由 Maven 集成引起)。

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

    【讨论】:

    • 非常感谢!!我遇到了同样的问题,没有任何办法让它工作。您的解决方案派上用场了!
    【解决方案7】:

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

    【讨论】:

      【解决方案8】:

      对于 Android Studio:

      Build --> Clean Project

      已修复问题。

      【讨论】:

        【解决方案9】:

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

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

        编辑:刚刚在我的笔记本电脑上的 Android Studio 3.0 Canary 4 上切换时遇到了这个问题。我再次经历了更改 AndroidManifest.xml 文件以包含错字、构建和改回的相同过程。那没有用。

        然后我注意到即时运行仍处于启用状态。进入设置(通过单击命令 + ,(逗号键))并输入“即时运行”,我能够禁用即时运行,构建应用程序,并且找不到类的错误消失了。

        修复步骤摘要 [FOR ME]

        1. 使缓存无效/重新启动
        2. 清理项目
        3. 手动删除构建文件夹(此文件夹需要在项目视图中)
        4. 对您的 AndroidManifest.xml 文件进行故意错误编辑,构建应用程序,观察错误,删除错误编辑并重新构建
        5. 禁用即时运行

        再次,我并不是要暗示这将解决每个人的错误,但我现在已经在两台不同的机器(MacOS Sierra)上使用了这些步骤的一些组合,并且已经为我解决了。希望能帮助到你。

        【讨论】:

        • 禁用 Instant Run 为我解决了这个问题
        • 我也是。我建议大家先“清理并构建”项目,如果它不起作用,然后“禁用即时运行”。
        • 使用 Android Studio 构建 apk,然后使用 adb install 安装对我有用。需要说明的是,我需要这个来测试“应用更新”功能,而不是永久
        【解决方案10】:

        在我的例子中,application idpackage 不匹配。这应该与以下图片中显示的相同...

        AndroidManifest.xml

        app/build.gradle

        在这种情况下您可以看到,applicationIdpackage 都相同,即 com.mycompany.mygamelibrary

        【讨论】:

        • 包名与你的applicationId不匹配没有什么问题
        • 这就是我写“在我的情况下”的原因。在你的情况下,它可能是不同的事情。 :)
        【解决方案11】:

        这一切流程都为我解决应用程序类异常工作。

        第1步:打开运行(window+R)搜索->预取删除所有文件(部分文件未删除)

        第二步:打开运行(window+R) 搜索 -> %temp% 删除所有文件(部分文件未删除)

        第 3 步:打开 Android Studio -> 构建 -> 清理项目

        从 Android Studio 工具栏中选择 File > Invalidate Caches / Restart > Invalidate and Restart。

        关闭并重新打开 Android 项目。

        重启系统

        【讨论】:

          【解决方案12】:

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

          在我的情况下,从设备中删除应用程序,然后从 Android Studio 安装它再次解决了问题。

          【讨论】:

            【解决方案13】:

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

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

            【讨论】:

              猜你喜欢
              • 2014-03-30
              • 1970-01-01
              • 1970-01-01
              • 2015-06-10
              • 1970-01-01
              • 1970-01-01
              • 2020-02-24
              • 2011-08-17
              • 2012-04-26
              相关资源
              最近更新 更多