我有一个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.download
11-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 #1
11-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.FileUtils
11-01 12:35:10.268: E/AndroidRuntime(4493): at au.com.grdc.alib.helpers.LibraryCommon.download(LibraryCommon.java:89)
我看到建议重命名我的" lib"文件夹到" libs",我已经完成了 - 这还没有解决问题。
我还看到了关于标记要导出的外部库的建议,这些建议我也做过,而且还没有解决问题。
答案 0 :(得分:5)
对(A)和(L)两者执行上述步骤。
还要确保(A)对(L)没有普通java风格的项目依赖。 项目>属性> Java构建路径> (A)项目不应列出(L),否则删除。
确保项目>属性>用于(A)的Android列表在库部分项目(L)中,否则添加。
答案 1 :(得分:0)
可能是org.apache.commons.io.FileUtils存在于几个jar中,JVM无法解析使用哪个..你可以交叉检查吗?