Guy*_*kes 20 java android intellij-idea
我重命名了我的包,现在我得到了这个奇怪的错误:
Unable to instantiate application
app.MyApplication: java.lang.ClassNotFoundException:
app.MyApplication in loaderdalvik.system.PathClassLoader
Run Code Online (Sandbox Code Playgroud)
该MyApplication班是Application/app.清单说:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="Application">
Run Code Online (Sandbox Code Playgroud)
<application
android:label="AGG"
android:name="app.MyApplication"...
Run Code Online (Sandbox Code Playgroud)
我试过重新启动,清理内置.是在模拟器上还是在真实设备上不起作用.
地球上到底是怎么回事?
rek*_*eru 26
让我们假设,你的项目基础包真的是Application,正如你在中所说的那样manifest.
如果你的MyApplication类在这个包中(类的包声明是package Application;),那么application你的元素androidManifest.xml应该是这样的
<application android:name=".MyApplication" [...]
Run Code Online (Sandbox Code Playgroud)
如果这个MyApplication类在Application.apppackage(package Application.app;)中,那么在清单中你应该写:
<application android:name=".app.MyApplication" [...]
Run Code Online (Sandbox Code Playgroud)
如果你没有扩展android.app.Application(你没有MyApplication extends android.app.Application类),只是想为你的应用程序设置一个名称,删除它这个属性,因为它告诉编译器有一个Application应该实例化的扩展而不是默认android.app.Application.
最后,如果第一个假设是错误的,并且您已经因为任何原因更改了androidManifest manifest元素中的包声明,请将其撤消或更新您的类以包含在该包中.
小智 6
就我而言,它抛出:
Caused by: java.lang.IllegalAccessException: java.lang.Class<foo.bar.MyApp> is not accessible from java.lang.Class<android.app.AppComponentFactory>
Run Code Online (Sandbox Code Playgroud)
原因是Application 类必须使用修饰符声明public,例如这样做:
public class MyApp extends Application {
}
Run Code Online (Sandbox Code Playgroud)
代替:
class MyApp extends Application {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36377 次 |
| 最近记录: |