Android use Dropbox Api java.lang.VerifyError: com/dropbox/c



我正在使用Dropbox SDK下载保存在Dropbox中的文件。我在AsynTask:中使用此方法

@Override
public void downloadData() {
    String filePath = getApplicationContext().getFilesDir().getPath().toString() + "/routes.xlsx";
    File file = new File(filePath);
    try {
        FileOutputStream outputStream = new FileOutputStream(file);
        DropboxAPI.DropboxFileInfo info = mDBApi.getFile("routes.xlsx", null, outputStream, null);
        Log.i("DbExampleLog", "The file's rev is: " + info.getMetadata().rev);
        RemoteResourcesLogic remoteResourcesLogic = new RemoteResourcesLogic();
        remoteResourcesLogic.read(filePath);
    } catch (Exception e) {
        Log.i("DbExampleLog", "Error getting folder");
    }
}

问题恰恰出现在:DropboxAPI.DropboxFileInfo info=mDBApi.getFile("routes.xlsx",null,outputStream,null);

我在libs文件夹中有所有必要的.jar:

  • httpcore-4.0.1.jar
  • 杜松子酒4.10.jar
  • json_simple-1.1.jar
  • httpmime-4.0.3.jar
  • httpclient-4.0.3.jar
  • dropbox-android-sdk-1.6.3.jar
  • bcprov-jdk16-146.jar

和两个罐子来读取xslx文件:

  • aa-poi-3.10-min-0.1.5.jar
  • aa-poi-ooxml-schemas-3.10-还原-更多-0.1.5.jar

有人能帮我吗?

问候

FATAL EXCEPTION: AsyncTask #1
Process: com.curiocity.android, PID: 28885
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.VerifyError: com/dropbox/client2/RESTUtility
at com.dropbox.client2.DropboxAPI.getFileStream(DropboxAPI.java:1544)
at com.dropbox.client2.DropboxAPI.getFile(DropboxAPI.java:1497)
at com.curiocity.admin.ImportRoutesActivity.downloadData(ImportRoutesActivity.java:111)
at com.curiocity.admin.ImportRoutesActivity$DownloadData.doInBackground(ImportRoutesActivity.java:125)
at com.curiocity.admin.ImportRoutesActivity$DownloadData.doInBackground(ImportRoutesActivity.java:121)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)

根据文档,VerifyError表示:

当VM注意到试图加载未通过类验证阶段的类时抛出。

在过去,当一个库,例如json_simple-1.1.jar,没有正确添加时,我就看到了这种情况。你能仔细检查一下你是否正确安装了dropbox-android-sdk-1.6.3.jar和json_simple-1.1.jar吗?说明可以在这里找到:

https://www.dropbox.com/developers-v1/core/sdks/android

如果您使用的是安卓工作室,请确保同时单击"添加为库"。

另外,请注意Dropbox API的文件路径应该以"/"开头,因此这行:

DropboxAPI.DropboxFileInfo info = mDBApi.getFile("routes.xlsx", null, outputStream, null);

应该是:

DropboxAPI.DropboxFileInfo info = mDBApi.getFile("/routes.xlsx", null, outputStream, null);

最新更新