java - Android ClassNotFoundException

标签 java android classnotfoundexception

我的一个应用程序出现问题,我想知道是否有人可以让我了解可能导致问题的原因。

我得到一个 ClassNotFoundException,下面的重要行是

E/AndroidRuntime(21982): Caused by: java.lang.ClassNotFoundException: couk.doridori.goigo.customUI.GoBoardView in loader dalvik.system.PathClassLoader@446fc3d0

现在这个应用程序已经发布了一年多 2 天前,我有两个单独的用户就这个问题与我联系,一个是 HTC wildfire (2.1),一个是三星 Galaxy S (?)。现在我无法在我的设备(2.2 和 1.6)或模拟器(2.1)上重新创建这个问题,也无法真正弄清楚为什么类加载器找不到这个类。我花了一段时间谷歌搜索无济于事,希望有人能提供一些指点!似乎只有在加载一个 Activity 时,当设置 contentView 时,它会尝试扩展一个名为 GoBoardView 的自定义 View ,它扩展了 View 类,这只是做一些简单的 Canvas 绘图而不是使用任何第三方库或任何其他会发生包名冲突或任何其他类。

请帮忙!以防万一它是一个构建问题,我正在通过 Eclipse 更新我的所有 SDK 和 ADT,因为它是针对 1.6 构建并使用旧 ADT,但我不知道这是否会有所帮助,只是认为值得一试。任何建议都会非常感谢! (编辑见下文)

E/AndroidRuntime(21982): java.lang.RuntimeException: Unable to start activity ComponentInfo{couk.doridori.goigoFull/couk.doridori.goigoFull.Board}: android.view.InflateException: Binary XML file line #14: Error inflating class couk.doridori.goigo.customUI.GoBoardView
E/AndroidRuntime(21982): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)
E/AndroidRuntime(21982): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)
E/AndroidRuntime(21982): at android.app.ActivityThread.access$2200(ActivityThread.java:126)
E/AndroidRuntime(21982): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
E/AndroidRuntime(21982): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(21982): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(21982): at android.app.ActivityThread.main(ActivityThread.java:4603)
E/AndroidRuntime(21982): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(21982): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(21982): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime(21982): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime(21982): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(21982): Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class couk.doridori.goigo.customUI.GoBoardView
E/AndroidRuntime(21982): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
E/AndroidRuntime(21982): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
E/AndroidRuntime(21982): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
E/AndroidRuntime(21982): at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
E/AndroidRuntime(21982): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
E/AndroidRuntime(21982): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
E/AndroidRuntime(21982): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
E/AndroidRuntime(21982): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
E/AndroidRuntime(21982): at android.app.Activity.setContentView(Activity.java:1629)
E/AndroidRuntime(21982): at couk.doridori.goigoFull.Board.onCreate(Board.java:31)
E/AndroidRuntime(21982): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(21982): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)
E/AndroidRuntime(21982): ... 11 more
E/AndroidRuntime(21982): Caused by: java.lang.ClassNotFoundException: couk.doridori.goigo.customUI.GoBoardView in loader dalvik.system.PathClassLoader@446fc3d0
E/AndroidRuntime(21982): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
E/AndroidRuntime(21982): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
E/AndroidRuntime(21982): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
E/AndroidRuntime(21982): at android.view.LayoutInflater.createView(LayoutInflater.java:466)
E/AndroidRuntime(21982): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
E/AndroidRuntime(21982): ... 22 more

编辑

好的,研究了用户在回复此问题时评论的一些链接,似乎使用错误的上下文加载 Activity 可能会导致此问题。我发现这很有趣,因为在我收到的 两个 日志报告中的 一个

之前有此异常
W/ActivityManager( 1222): startActivity called from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { flg=0x20000 cmp=couk.doridori.goigoFull/.Games }

这是非常不言自明的 - 问题是我不知道这个 Activity 可以从它使用非 Activity 上下文的地方开始,所以我有点难过,认为它可能是一些像怪癖这样的多任务处理并且它被带回来进入某事的前景。这显然会导致类加载器出现问题。如果这是在用户手机上发生的,我不明白为什么我不能重现这个(大多数其他用户也不能)。

我通过链接发现的另一件有趣的事情是,有些人由于“不正确的 apk 安装”而遇到问题,可以通过重新安装来解决,我已询问有问题的用户尝试(这没有什么区别)。而且似乎一旦遇到问题(第一次使用)它就会持续存在。

最佳答案

我不禁注意到您的 Activity 名称是 couk.doridori.goigoFull.Board 但您缺少的自定义 View 类是 couk.doridori.goigo.customUI.GoBoardView ...看起来你可能有两个不同的包(goigo vs goigoFull)。

你有没有机会在图书馆项目上做一些聪明的事情?您需要非常小心代码和布局 xml 中的完全限定类名...

(如果没有,请添加有关您的项目设置的更多信息,并粘贴您的布局 XML,其中 layoutinflater 阻塞)

关于java - Android ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4880489/

相关文章:

android - React Native Android - 无法找到或加载主类 org.gradle.wrapper.GradleWrapperMain

java - 为什么我要使用 Android 本地服务来执行后台网络任务?

android - java.lang.ClassNotFoundException : Didn't find class on path: DexPathList , 更新sdk后

java - Hibernate OneToOne 试图从 null 一对一属性分配 id

android - Android KitKat 中的新 WebView 问题

mysql - Groovy - 找不到类

Java-Web-Start 在我的应用程序中创建 docx 文件时出现 NoClassDefFoundError

java - 正则表达式匹配url

java - 模式 : Java class conversion from axis objects

java - 设置HornetQ Embedded-Remote示例