调用DropBox时的AssertionError getAccountInfo()

时间:2013-09-13 17:44:50

标签: java dropbox assertion

我遇到了一个奇怪的但是DropBox我上周没有遇到过。我创建了一个简单的java控制台应用程序,用于从DropBox中提取文件,然后在本地存储,这是有效的,但由于某种原因,它现在失败了。正在从文件中读入AccessToken和UserID。

MyDBAccessToken = params.get(0);
MyDBUserID      = params.get(1);
MyDBUrlState    = null;

DbxAuthFinish authToken  = new DbxAuthFinish(MyDBAccessToken, MyDBUserID, MyDBUrlState);
DbxRequestConfig config  = new DbxRequestConfig( "JavaTutorial/1.0", Locale.getDefault().toString());
DbxClient MyDBClient     = new DbxClient(config, authToken.accessToken);
System.out.println("Linked to DropBox account: " + MyDBClient.getAccountInfo().displayName + " ID " + MyDBClient.getAccountInfo().userId);

这是我的堆栈跟踪

Exception in thread "main" java.lang.AssertionError: bad index: -1, field = "datastores"
at com.dropbox.core.DbxAccountInfo$Quota$1.read(DbxAccountInfo.java:91)
at com.dropbox.core.DbxAccountInfo$Quota$1.read(DbxAccountInfo.java:66)
at com.dropbox.core.json.JsonReader.readField(JsonReader.java:26)
at com.dropbox.core.DbxAccountInfo$1.read(DbxAccountInfo.java:152)
at com.dropbox.core.DbxAccountInfo$1.read(DbxAccountInfo.java:128)
at com.dropbox.core.json.JsonReader.readFully(JsonReader.java:349)
at com.dropbox.core.json.JsonReader.readFully(JsonReader.java:238)
at com.dropbox.core.DbxRequestUtil.readJsonFromResponse(DbxRequestUtil.java:218)
at com.dropbox.core.DbxClient$4.handle(DbxClient.java:275)
at com.dropbox.core.DbxClient$4.handle(DbxClient.java:270)
at com.dropbox.core.DbxRequestUtil.doGet(DbxRequestUtil.java:269)
at com.dropbox.core.DbxClient.doGet(DbxClient.java:1804)
at com.dropbox.core.DbxClient.getAccountInfo(DbxClient.java:270)

1 个答案:

答案 0 :(得分:2)

似乎该库试图解析的任何JSON都已损坏。

话虽如此,在生产环境中从公共API传播的AssertionError始终是一个错误。断言错误基本上意味着库作者所做的假设并非总是如此。需要更正代码以使假设始终为真,或者应抛出更相关的Exception子类并将其记录为API的一部分。

事实上,这是该库的Dropbox问题跟踪器上的问题。

DbxClient.getAccountInfo fails with AssertionError.

您可能希望对该问题发表评论并提供更多详细信息(即堆栈跟踪和您正在做的事情的描述),因为问题提交者没有提供。