【问题标题】:ClassNotFoundException on Galaxy Tab (only)Galaxy Tab 上的 ClassNotFoundException(仅限)
【发布时间】:2011-05-25 12:33:18
【问题描述】:

我有一个可以运行的 Android 应用程序。它适用于 500 多种不同的设备。清单是

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="info.decamps.droid.photoid" android:versionCode="5"
android:versionName="1.4">
<application android:icon="@drawable/icon" android:label="@string/app_label"
    android:name="PhotoIDroid" android:description="@string/app_desc"
    android:debuggable="FALSE">

但是当它从三星 Galaxy Tab 启动时,它无法启动并崩溃:

java.lang.RuntimeException: 无法 实例化应用程序 info.decamps.droid.photoid.PhotoIDroid: java.lang.ClassNotFoundException: info.decamps.droid.photoid.PhotoIDroid 在装载机 dalvik.system.PathClassLoader[/data/app/info.decamps.droid.photoid-1.apk] 在 android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:670) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:4483) 在 android.app.ActivityThread.access$3000(ActivityThread.java:135) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2181) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:144) 在 android.app.ActivityThread.main(ActivityThread.java:4937) 在 java.lang.reflect.Method.invokeNative(Native 方法)在 java.lang.reflect.Method.invoke(Method.java:521) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 在 dalvik.system.NativeStart.main(Native 方法)引起: java.lang.ClassNotFoundException: info.decamps.droid.photoid.PhotoIDroid 在装载机 dalvik.system.PathClassLoader[/data/app/info.decamps.droid.photoid-1.apk] 在 dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:573) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:532) 在 android.app.Instrumentation.newApplication(Instrumentation.java:945) 在 android.app.ActivityThread$PackageInfo.makeApplication(ActivityThread.java:660) ... 11 更多

Samsung Galaxy 怎么找不到应用程序类? 有关如何解决此问题的任何线索?

我已经能够在三星 Galaxy 模拟器上重现该崩溃。

【问题讨论】:

  • @rds: info.decamps.droid.photoid.PhotoIDroid的超类是什么?
  • @CommonsWare 我不确定我是否理解您的问题。这个类我没有开发,是Android从manifest生成的Application类。从文档中,“这里通常不需要继承 Application。”
  • @rds:引发异常是因为 Android 无法加载 info.decamps.droid.photoid.PhotoIDroid。这是一堂课。 Java 中的类有超类。 info.decamps.droid.photoid.PhotoIDroid 的超类是什么?
  • 当我安装新的 SDK 并且我的扩展应用程序类位于库项目中时,我遇到了同样的问题。为了修复它,我删除了库项目并重新添加了它。

标签: android galaxy


【解决方案1】:

我已经从AndroidManifest.xml 中删除了android:name 属性声明,它现在可以工作了。

【讨论】:

  • 这基本上意味着它不再使用您的自定义 Application 类。如果这对你有用,酷。如果没有,由于可能存在超类 (Application),请检查静态初始化程序等,看看您要求的内容可能会丢失。
  • 谢谢,但我没有编写任何自定义应用程序类。如果该类不存在,似乎大多数手机(和模拟器)都会忽略android:name。也许,它是最近在 API 中添加的(因此被旧设备忽略)
  • android:name 自 1.0 以来一直存在,如果找不到指定的类,则应始终使应用程序崩溃。奇怪。
  • 你是对的@hackbod,这很奇怪。然而,我在 Eclipse 中创建了一个新的“Hello world”脚手架,更改了&lt;string name="app_name"&gt;hello world&lt;/string&gt;android:name="@string/app_name",它确实可以在模拟器中运行。这应该被视为一个错误吗?
  • @rds:或者可能是相对路径的情况。您是否尝试过将 PhotoIDroid 声明为 android:name=".PhotoIDroid",因为我假设此类是相对于包 info.decamps.droid.photoid 找到的。如果不是,则相对于这个包声明它。
猜你喜欢
  • 1970-01-01
  • 2012-09-14
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多