我有一个Android应用程序项目(A)和一个AndroID库项目(L). A使用L作为库.
L,库项目,已经使用了一些外部库:Apache Commons Codec 1.7,Apache Commons Lang3 3.1,AndroID支持库V4和ActionbarSherlock 4.0,作为库项目引用.所有这些库以及调用它们的代码都可以正常工作,并且已经运行了一段时间.
但是,我最近添加了一个库:Apache Commons IO 2.4.现在我的应用程序在库代码(在L中)尝试调用Commons IO中的方法时崩溃.
我添加IO库的方式与添加其他所有外部库的方式完全相同:
当我的申请首次开始时,我得到:
11-01 12:32:14.243: I/dalvikvm(3815): Could not find method org.apache.commons.io.fileUtils.copyinputStreamTofile, referenced from method au.com.Grdc.alib.helpers.libraryCommon.download11-01 12:32:14.243: W/dalvikvm(3815): VFY: unable to resolve static method 7039: Lorg/apache/commons/io/fileUtils;.copyinputStreamTofile (Ljava/io/inputStream;Ljava/io/file;)V
后来我得到:
11-01 14:50:48.913: E/AndroIDRuntime(10030): FATAL EXCEPTION: AsyncTask #111-01 14:50:48.913: E/AndroIDRuntime(10030): java.lang.RuntimeException: An error occured while executing doInBackground()...11-01 12:35:10.268: E/AndroIDRuntime(4493): Caused by: java.lang.NoClassDefFoundError: org.apache.commons.io.fileUtils11-01 12:35:10.268: E/AndroIDRuntime(4493): at au.com.Grdc.alib.helpers.libraryCommon.download(libraryCommon.java:89)
我看到建议将我的“lib”文件夹重命名为“libs”,我已经完成了 – 这没有解决问题.
我还看到了要标记要导出的外部库的建议,我也已经完成了,并且还没有解决问题.
解决方法:
>更新你的eclipse-androID-plugin和androID-tools(他们改变了libs的处理方式)
>确保您的项目中有“libs”(非“lib”)文件夹.
>将所有库jar放在’libs’文件夹中.
>确保“libs”文件夹中的库jar不会像在普通的java项目中那样添加到构建路径中. AndroID会自动添加它们.如果你看项目>属性> Java构建路径>图书馆:
>确保顶层没有显示单个库库(否则删除它们)
>检查是否存在名为“AndroID DependencIEs”的自动创建的顶级依赖关系组.
>检查libs文件夹中的所有jar是否已自动添加到“AndroID DependencIEs”组中
对(A)和(L)两者执行上述步骤.
还要确保(A)对(L)没有普通java风格的项目依赖.
项目>属性> Java构建路径> (A)项目不应列出(L),否则删除.
确保项目>属性> AndroID for(A)列在library部分项目(L)中,否则添加.
总结以上是内存溢出为你收集整理的为什么我的Android应用程序因特定库的NoClassDefFoundError而崩溃?全部内容,希望文章能够帮你解决为什么我的Android应用程序因特定库的NoClassDefFoundError而崩溃?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)