Java ClassNotFoundException Android

Java ClassNotFoundException Android,java,android,dalvik,classnotfoundexception,classnotfound,Java,Android,Dalvik,Classnotfoundexception,Classnotfound,所以我今天在开发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

所以我今天在开发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: DEBUG/App(259): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 06-21 22:44:26.402:DEBUG/App(259):java.lang.ClassNotFoundException:com.package.mycode.Class在loader dalvik.system中。PathClassLoader@4001b500 06-21 22:44:26.402:DEBUG/App(259):在dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 我隐藏了我的应用程序名和包,原因很明显,但我想知道是否有人遇到过这样的问题。类位于正确的包中,这是我添加的库。我以前参考过的其他类也在那里,可以制作。是否存在引发
ClassNotFoundException
的其他原因

谢谢, 杰克

抛出ClassNotFoundException还有其他原因吗


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

Android并没有在普通机器上可用的所有Java类。 缺少某些类可能导致此错误。但这应该已经在编译时显示出来了。看看这个,看看哪些类受支持,哪些类不受支持

同样,我只是猜测,因为编译器应该会看到缺少的类

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

这是我目前拥有的代码,我相信它解决了这个问题。MyClass只是我项目中的一个类。正如我所说,一位同事向我展示了它,但它似乎非常直截了当。

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

当jar位于lib文件夹中(也被添加到构建路径中)时,虽然Eclipse中没有构建问题,但应用程序在运行时给出了ClassNotFoundException。一旦我将jar移动到“libs”文件夹,jar就开始出现在“Android依赖项”下,应用程序开始正常工作

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


我在启动aynctask时遇到问题。它过去工作得很好,但后来我又加了一句

line = StringEscapeUtils.unescapeHtml4(line);
(它是一个commons.apache.org库)来处理异步任务,然后会出现很多问题。它可以编译,但当我试图运行时,它说在我的asynctask类中找不到类。但当我点击resume时,它在异步任务中继续运行,然后它就死了

所以我想问题是StringEscapeUtils没有正确安装,但我无法从收到的错误消息中找到答案

抛出ClassNotFoundException还有其他原因吗

在我的例子中,当使用eclipse构建apk时,我的主要活动得到了一个ClassNotFoundException,但在使用maven构建时没有任何问题

问题是,我的主要活动是实现一个来自普通java项目“POJO库”的接口。在Android项目>属性>Java构建路径>订单和导出中,我必须勾选该框以导出“POJO库”。清理项目后,接口被包含在apk中的classes.dex中,问题得到了解决


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

我不知道这意味着什么>\u我没有任何其他被导入或依赖的类不受支持。尝试加载的文件是我创建的jar文件的一部分,因此它可以与其他jar文件一起很好地编译。我希望我明白了你的意思。你把这个jar文件放在你的android项目中了吗?我在我的应用程序类的默认构造函数中调用它。