大多数设备都可以运行我的应用,但我收到了此错误报告:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.company.app/com.company.app.MainActivity}: java.lang.ClassNotFoundException: com.company.app.MainActivity in loader dalvik.system.PathClassLoader[/mnt/asec/com.company.app-1/pkg.apk]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2755)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2854)
at android.app.ActivityThread.access$2300(ActivityThread.java:136)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2179)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:5068)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.company.app.MainActivity in loader dalvik.system.PathClassLoader[/mnt/asec/com.company.app-1/pkg.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
at android.app.Instrumentation.newActivity(Instrumentation.java:1034)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2747)
... 11 more
我发现有一个相关的答案: ClassNotFoundException Android
但问题是,我的异常发生在我编写的任何代码行之前,那么如何确保加载类加载器?
答案 0 :(得分:20)
我有完全相同的问题。突然,我的应用程序停止了工作。我没有对清单进行任何改动,但是出现了一些意外,第一排错过了:
<?xml version="1.0" encoding="utf-8"?>
这导致启动器活动ClassNotFoundException
。几个小时我一直在努力,每次检查清单时都会忽略这个错误。
在我再次删除此行后发生了奇怪的事情。惊喜,惊喜应用程序仍然在工作。 (我没有忘记重建应用程序)
希望这可以帮助别人节省几个小时。
答案 1 :(得分:10)
我在清单中未正确定义类时遇到此错误,通常是因为我没有输入正确的名称空间,如下所示:
<activity android:name="com.company.project.main.MyMainActivity" ...>
而不是
<activity android:name="MyMainActivity" ...>
不确定为什么它会在某些设备上而不是其他设备上工作。
答案 2 :(得分:6)
请关闭你的日食并打开。清理您的项目并进行刷新。然后跑去看看。
答案 3 :(得分:3)
我遇到了同样的问题,问题是使用Android支持库的第三方库。
myproject/libs/android-support-v4.jar
3rdpartylib/libs/android-support-v4.jar
当我使用较新版本更新库时,支持库也已更新 - 但不在我的项目中。之后我无法使用此错误启动应用程序。在使两个库相同(复制)之后,它没问题。
答案 4 :(得分:2)
在eclipse中,选中Properties&gt; Java Build Path&gt; Source,看看输出文件夹是否始终是默认值(/ bin / classes)。
对我来说,这是一个问题,因为maven插件:每当我右键单击&gt; Maven&gt;更新项目...&gt;好的,它会将src文件夹的输出文件夹更改为target / classes,从而导致ClassNotFoundException。
答案 5 :(得分:1)
过去几天我遇到了这个问题。我可以在每个测试环境中运行我的应用程序,我可以导出一个版本apk,并在每个测试环境中安装并运行它,但是当我将apk上传到Play商店并从Play商店安装时,应用程序将关闭抛出ClassNotFoundException 。事实证明,在我的项目中,我将多部分表单数据发送到web api,为此需要一些外部库。首先,我刚刚收录了所有mim4j
,httpclient
和httpcore
.jars
(原来是很多广告)。
在逐一删除几乎所有这些之后,看看我的项目是否还会构建,我只剩下一个实际上需要的jar。带走是删除任何不需要构建的罐子。然后我测试了应用程序,结果我需要添加一个罐子,因为它的资源是由构建项目所需的资源引用的。确保在删除jar后测试应用的每个功能。
然后我浏览了我所包含的每个图书馆项目,然后右键点击project -> properties -> java build path -> order and export
并选中所有框 FOR EVERY LIBRARY 和我自己的套餐
然后我对包含的每个项目和主项目进行了project -> clean
。
然后我导出了apk并将其打包进行beta测试,最终用于用户设备。
答案 6 :(得分:1)
我遇到了这个问题,并使用this进行了修复。
我没有在&#34;订购和导出&#34;下检查一个外部库。我收到了错误。
答案 7 :(得分:1)
上述答案都没有对我有用,如果将来会给任何人节省一些时间,我会提供我的解决方案。
显然对我有用的是在我的项目中删除额外的支持lib v4 jar。
在我通过android工具更新支持库之后,我不得不在我使用的许多库中修复jar不匹配,并将它们全部指向android-sdks文件夹中的同一个jar。
我还意外地将它添加到我的项目中,并且由于某种原因它使我的MainActivity类在运行时找不到,因为jar也在我正在使用的android-support-v7-appcompat库中。
根本没有日食错误。
我从我的项目中删除了jar,并在导出选项卡中检查了v7 appcompat库中的jar,因此它也可用于我的项目,并且瞧,app正在运行。
答案 8 :(得分:0)
我刚遇到这个问题。事实证明这是因为我已将我的MainActivity移动到一个新的包中。
我做的是从
移动它com.example.MainActivity
到
Activity
所以在我的清单中它看起来像这样:
android:name="Activity.MainActivity"`
通过将其移回原始包装解决它。它也可以通过正确重命名包来解决:
例如:com.example.Activity.MainActivity
希望这有助于某人。
答案 9 :(得分:0)
感谢版本控制,我注意到我的.classpath xml文件中没有这些行:
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
这些导致主要活动未找到Class。
答案 10 :(得分:0)
我在运行Robolectric测试时也得到了相同的结果。实际上,测试类路径包括jar.com和android.com.Activity,它还没有成立。 我的解决方案是将JAVA_HOME从第10个JDK版本降级,该版本在Maven项目中使用。
答案 11 :(得分:0)
我将以下文件夹复制/粘贴到一个新项目中,保留相同的包名称,并解决了该问题:
最后我添加了文件依赖项build.gradle
。
GL