Android ClassNotFoundException

9 浏览
0 Comments

Android ClassNotFoundException

我有一个应用程序的问题,想知道是否有人能给我一些关于可能导致问题的见解。

我遇到了一个ClassNotFoundException,下面是重要的一行:

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

现在这个应用程序已经发布了一年多了,两天前我有两个不同的用户联系我反馈了这个问题,一个是在HTC wildfire (2.1)上,另一个是在三星Galaxy S (?)上。现在我无法在我的设备(2.2和1.6)或模拟器(2.1)上重现这个问题,也无法弄清楚为什么类加载器无法找到这个类。我已经花了一段时间在谷歌上搜索,但没有任何结果,希望有人能给一些建议!只有在加载一个活动时才会出现这个问题,当设置contentView时,它会尝试膨胀一个名为GoBoardView的自定义视图,它扩展了View类,只做了一些简单的画布绘制,并没有使用任何第三方库或其他可能导致包名冲突的类。

请帮忙!以防万一是构建问题,我正在通过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

编辑

好的,研究了一些用户在回答这个问题时提到的链接,似乎在加载活动时使用错误的上下文可能会导致这个问题。我觉得这很有趣,因为其中之一两个日志报告在这个异常之前有这样一个例外:

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

这很容易理解-问题是我不知道在哪里启动了这个活动,它使用了一个非活动上下文,所以我有点困惑,可能是一些多任务的怪异行为,它被带回到前台的某个地方。这似乎会对类加载器造成问题。如果这是发生在用户手机上,我就不明白为什么我无法重现这个问题(大多数其他用户也无法重现)。

我在链接中还发现了另一件有趣的事情,有些人遇到了"不正确的apk安装"的问题,可以通过重新安装来解决,我已经要求遇到这个问题的用户尝试过(但没有什么区别)。另外,一旦遇到了这个问题(在第一次使用时),它将会持续存在。

0