android – 重构包名称使用ClassNotFoundException打破应用程序,因为找不到Application类,即使它在那里
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android – 重构包名称使用ClassNotFoundException打破应用程序,因为找不到Application类,即使它在那里,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8185字,纯文字阅读大概需要12分钟。
内容图文
![android – 重构包名称使用ClassNotFoundException打破应用程序,因为找不到Application类,即使它在那里](/upload/InfoBanner/zyjiaocheng/750/df3b6b7e1b214d958e08824026a4bc01.jpg)
我有这个包格式:
com
example
name
oldAppName
现在,我通过Shift F6重构并重命名为:
com
myCompanyName
name
newAppName
但是,现在当我运行我的应用程序时,我遇到了这个崩溃:
java.lang.ClassNotFoundException: Didn't find class "com.example.name.oldAppName.Application" on path: DexPathList[[zip file "/data/app/com.myCompanyName.name.newAppName1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
我在newAppName下有我的Application.java,它在Manifest中正确定义
我尝试过的是:
>清洁和重建
>在build.gradle中更改applicationId
>清单中的包名称是正确的,应用程序和活动的所有名称也是正确的.
实际上,这是我的应用程序清单标记:
<application
android:name=".Application"
...
>
甚至将.Application更改为完整的包名(com.blah.blah.Application)也行不通.
我错过了什么吗?有缺失的一步吗?
这是完整的日志:
java.lang.RuntimeException: Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication: java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.example.name.oldAppName.Application
at android.app.LoadedApk.makeApplication(LoadedApk.java:516)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4345)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5045)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.example.name.oldAppName.Application
at com.android.tools.fd.runtime.BootstrapApplication.createRealApplication(BootstrapApplication.java:220)
at com.android.tools.fd.runtime.BootstrapApplication.attachBaseContext(BootstrapApplication.java:239)
at android.app.Application.attach(Application.java:181)
at android.app.Instrumentation.newApplication(Instrumentation.java:1008)
at android.app.Instrumentation.newApplication(Instrumentation.java:992)
at android.app.LoadedApk.makeApplication(LoadedApk.java:511)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4345)?
at android.app.ActivityThread.access$1500(ActivityThread.java:135)?
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)?
at android.os.Handler.dispatchMessage(Handler.java:102)?
at android.os.Looper.loop(Looper.java:136)?
at android.app.ActivityThread.main(ActivityThread.java:5045)?
at java.lang.reflect.Method.invokeNative(Native Method)?
at java.lang.reflect.Method.invoke(Method.java:515)?
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)?
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)?
at dalvik.system.NativeStart.main(Native Method)?
Caused by: java.lang.ClassNotFoundException: com.example.name.oldAppName.Application
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:251)
at java.lang.Class.forName(Class.java:216)
at com.android.tools.fd.runtime.BootstrapApplication.createRealApplication(BootstrapApplication.java:209)
at com.android.tools.fd.runtime.BootstrapApplication.attachBaseContext(BootstrapApplication.java:239)?
at android.app.Application.attach(Application.java:181)?
at android.app.Instrumentation.newApplication(Instrumentation.java:1008)?
at android.app.Instrumentation.newApplication(Instrumentation.java:992)?
at android.app.LoadedApk.makeApplication(LoadedApk.java:511)?
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4345)?
at android.app.ActivityThread.access$1500(ActivityThread.java:135)?
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)?
at android.os.Handler.dispatchMessage(Handler.java:102)?
at android.os.Looper.loop(Looper.java:136)?
at android.app.ActivityThread.main(ActivityThread.java:5045)?
at java.lang.reflect.Method.invokeNative(Native Method)?
at java.lang.reflect.Method.invoke(Method.java:515)?
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)?
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)?
at dalvik.system.NativeStart.main(Native Method)?
Caused by: java.lang.NoClassDefFoundError: com.example.name.oldAppName/Application
at java.lang.Class.classForName(Native Method)?
at java.lang.Class.forName(Class.java:251)?
at java.lang.Class.forName(Class.java:216)?
at com.android.tools.fd.runtime.BootstrapApplication.createRealApplication(BootstrapApplication.java:209)?
at com.android.tools.fd.runtime.BootstrapApplication.attachBaseContext(BootstrapApplication.java:239)?
at android.app.Application.attach(Application.java:181)?
at android.app.Instrumentation.newApplication(Instrumentation.java:1008)?
at android.app.Instrumentation.newApplication(Instrumentation.java:992)?
at android.app.LoadedApk.makeApplication(LoadedApk.java:511)?
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4345)?
at android.app.ActivityThread.access$1500(ActivityThread.java:135)?
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)?
at android.os.Handler.dispatchMessage(Handler.java:102)?
at android.os.Looper.loop(Looper.java:136)?
at android.app.ActivityThread.main(ActivityThread.java:5045)?
at java.lang.reflect.Method.invokeNative(Native Method)?
at java.lang.reflect.Method.invoke(Method.java:515)?
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)?
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)?
at dalvik.system.NativeStart.main(Native Method)?
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.name.oldAppName.Application" on path: DexPathList[[zip file "/data/app/com.newCompanyName.name.newAppName-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.myCompanyName.name.newAppName-1, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at java.lang.Class.classForName(Native Method)?
at java.lang.Class.forName(Class.java:251)?
at java.lang.Class.forName(Class.java:216)?
at com.android.tools.fd.runtime.BootstrapApplication.createRealApplication(BootstrapApplication.java:209)?
at com.android.tools.fd.runtime.BootstrapApplication.attachBaseContext(BootstrapApplication.java:239)?
at android.app.Application.attach(Application.java:181)?
at android.app.Instrumentation.newApplication(Instrumentation.java:1008)?
at android.app.Instrumentation.newApplication(Instrumentation.java:992)?
at android.app.LoadedApk.makeApplication(LoadedApk.java:511)?
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4345)?
at android.app.ActivityThread.access$1500(ActivityThread.java:135)?
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)?
at android.os.Handler.dispatchMessage(Handler.java:102)?
at android.os.Looper.loop(Looper.java:136)?
at android.app.ActivityThread.main(ActivityThread.java:5045)?
at java.lang.reflect.Method.invokeNative(Native Method)?
at java.lang.reflect.Method.invoke(Method.java:515)?
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)?
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)?
at dalvik.system.NativeStart.main(Native Method)?
解决方法:
有时,禁用即时运行将解决问题.
或者,如果禁用“即时运行”不起作用,问题可能在于Android Studio尚未识别更改.首先备份您的项目,并注意您必须在此之后重新配置您的VCS(但不会丢失提交或分支,只需注册您的VCS.)
删除应用的.idea和[yourProjectName] .iml.
对于未来的用户:
在Android Studio中重命名包的正确方法
>在“项目”窗格中,选择齿轮图标
>如果选中,则取消选中“Compact Empty Middle Packages”.
>现在继续使用重构 – >重命名每个分解的软件包名称(实际上是com,example,name,oldAppName)
>重命名可能会打开一个警告对话框,您可能需要在其中选择“重命名包”
>完成重命名包后,将gradle中的applicationId替换为正确的
>同步gradle
>清洁和重建
您可以找到更好的版本如何正确重构您的包here
P.S:您必须在未获得“ClassNotFound”异常的位置恢复原始包名称并尝试上述解决方案.
内容总结
以上是互联网集市为您收集整理的android – 重构包名称使用ClassNotFoundException打破应用程序,因为找不到Application类,即使它在那里全部内容,希望文章能够帮你解决android – 重构包名称使用ClassNotFoundException打破应用程序,因为找不到Application类,即使它在那里所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。