Android:无法实例化应用程序

23

我重命名了我的包,现在我得到了这个奇怪的错误:

Unable to instantiate application
app.MyApplication: java.lang.ClassNotFoundException: 
app.MyApplication in loaderdalvik.system.PathClassLoader

MyApplication 类位于 Application/app 中。清单文件中如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  package="Application">
<application 
    android:label="AGG"
    android:name="app.MyApplication"...

我尝试了重新启动和清理构建。在模拟器和真实设备上都无法工作。

到底发生了什么?

13个回答

29
假设你的项目基础包名是Application,如你在manifest中所述。
如果你的MyApplication类位于该包中(类的包声明为package Application;),那么androidManifest.xml中的application元素应该如下所示:
<application android:name=".MyApplication" [...]
如果这个 MyApplication 类在 Application.app; 包内,那么在清单文件中应该这样写:

<application android:name=".MyApplication" ...>

<application android:name=".app.MyApplication" [...]

如果您没有扩展android.app.Application(即没有一个MyApplication extends android.app.Application类),只是想为您的应用程序设置名称,请删除该属性,因为它会告诉编译器有一个Application扩展应该被实例化,而不是默认的android.app.Application

最后,如果第一个假设是错误的,并且由于任何原因您已更改了AndroidManifest文件中manifest元素的包声明,请撤消该更改或更新您的类以在该包中。


你是正确的。我有一个自定义的android.app.Application(MyApplication)。我忘了在“app.MyApplication”之前加上前导“.”。 - GuyFawkes
很高兴你来了,继续愉快地编程吧! - rekaszeru
@MichałK 上面的评论点赞,重启Eclipse对我有用! - Steven De Bock

9

对我来说,问题出在即时运行。禁用它解决了问题。

如果我找到重新启用并使其工作的解决方案,我会更新。


2
Android Studio团队仍未修复此问题。 - Zeeshan
这应该是被接受的答案。即时运行出现了问题。 - Noman
禁用即时运行 -> 设置并写入即时运行 - Anthone
奇怪...对我来说,它是启用即时运行。 - mco

5

在我的情况下,它会抛出:

Caused by: java.lang.IllegalAccessException: java.lang.Class<foo.bar.MyApp> is not accessible from java.lang.Class<android.app.AppComponentFactory>
原因是 Application 类必须使用修饰符 public 声明,例如:

public class MyApp extends Application {
}

替代:

class MyApp extends Application {
}

3

2

在我的情况下,我将JAVA编译器兼容级别从1.7更改为1.6,问题得到解决。


1

请确保您清单中的所有引用都已更新以反映您的新包名称。


1

应该将package="Application"修改为package="MyApplication"吗?


1

0

删除这些行对我有用:

compileOptions {
   sourceCompatibility JavaVersion.VERSION_1_8
   targetCompatibility JavaVersion.VERSION_1_8
}

更新:
这个问题的原因是我在电脑上没有安装JAVA 8。


0

简单清理项目并重新构建。


  1. 请认真阅读问题(是的,全部都要)
  2. 这个问题几年前就已经被回答了
  3. 欢迎来到SE
- GuyFawkes
它对我有效。我的项目没有做任何修改,问题突然出现。删除构建文件夹后重新运行,问题得到解决。这是Android Studio的一个错误。 - Lam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接