6

所以我今天在处理我的 Android 程序时遇到了一个问题。我有一个类可以将 XML 字符串转换为 Java 对象(第三方),它在常规 Java 项目中运行良好,但在 Android 上我得到了这个奇怪的错误:

06-21 22:44:26.402: DEBUG/App(259): java.lang.ClassNotFoundException: com.package.mycode.Class in loader dalvik.system.PathClassLoader@4001b500
06-21 22:44:26.402:调试/应用程序(259):在 dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)

出于显而易见的原因,我隐藏了我的应用程序名称和我的包,但我想知道是否有人遇到过这样的问题。类在正确的包中,这是我添加的一个库。我之前引用的其他类在那里并且可以制作。ClassNotFoundException抛出a 是否还有其他原因?

谢谢,杰克

4

6 回答 6

9
private static void fixClassLoaderIssue()
{
    ClassLoader myClassLoader = MyClass.class.getClassLoader();
    Thread.currentThread().setContextClassLoader(myClassLoader);
}

这是我目前拥有的代码,我相信它可以解决这个问题。MyClass 只是我项目中的一个类。就像我说的,一个同事向我展示了它,但它看起来很简单。

于 2011-02-04T18:22:12.507 回答
0

抛出 ClassNotFoundException 是否还有其他原因?

IIRC,如果“com.package.mycode.Class”的静态依赖项中的某些其他类无法加载,或者静态初始化过程中出现问题,也会抛出它。但这些应该显示为嵌套异常...当您第一次尝试加载该类时

于 2010-06-22T03:19:53.203 回答
0

Android 没有在普通机器上可用的所有 Java 类。缺少一些可能导致此错误的类。但这应该已经在编译时显示。查看此列表以了解支持哪些类以及不支持哪些类。

同样,我只是在猜测,因为编译器应该会看到丢失的类。

于 2010-06-22T06:52:49.783 回答
0

对于 android 应用程序,我对外部 jar 文件有同样的问题。在我的情况下,解决方案是将 jar 从“lib”文件夹移动到 android 默认的“libs”文件夹。

当 jar 在 lib 文件夹中(也被添加到构建路径中)时,虽然 Eclipse 中没有构建问题,但应用程序在运行时给出了 ClassNotFoundException。将 jar 移动到“libs”文件夹后,该 jar 开始出现在“Android Dependencies”下,并且应用程序开始正常工作。

这些是关于同一主题的其他一些讨论。

将库/JAR 添加到 Eclipse Android 项目

Android:jar 文件(LIB 或 LIBS)的文件夹名称是什么?

使用 Android 生成的 ant 构建文件时如何为 JAR 指定 lib 文件夹?

于 2012-05-16T10:34:54.143 回答
0

我在启动 aynctask 时遇到问题。它曾经工作得很好,但后来我添加了

line = StringEscapeUtils.unescapeHtml4(line);

(它是一个commons.apache.org 库)到asynctask 然后很多问题。它编译正常,但是当我尝试运行时,它说在我的 asynctask 类上找不到类。但是我点击恢复它继续执行异步任务,然后它死了。

所以我想问题是没有正确安装 StringEscapeUtils,但我无法从收到的错误消息中弄清楚这一点。

于 2013-02-16T03:35:15.007 回答
0

抛出 ClassNotFoundException 是否还有其他原因?

就我而言,在使用 eclipse 构建 apk 时,我的主要活动得到了 ClassNotFoundException,但在使用 maven 构建时没有任何问题。

问题是我的主要活动是从一个普通的 java 项目“POJO 库”实现一个接口。在 Android 项目>Properties>Java Build Path>Order and Export 中,我必须勾选该框以导出“POJO 库”。清理项目后,将该接口包含在apk中的classes.dex中,问题解决。

当我试图理解这个问题时,我被指引到这里,我希望它能帮助处于同样情况的其他人。

于 2013-08-20T17:23:37.947 回答