Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ektorp couchdb IllegalStateException内容已消耗_Java_Couchdb_Illegalstateexception_Ektorp - Fatal编程技术网

Java ektorp couchdb IllegalStateException内容已消耗

Java ektorp couchdb IllegalStateException内容已消耗,java,couchdb,illegalstateexception,ektorp,Java,Couchdb,Illegalstateexception,Ektorp,我已经有一段时间没有使用Java了,尤其是异常。我正在将ektorp couchdb集成添加到我正在研究的东西中。然而,我遇到了内容消费异常 该程序使用twitter4j,我正在获取我的状态并将其写入couchdb实例 public void putTweet(Status status) { Map<String, Object> newTweetDoc = new HashMap<String, Object>(); String docname =

我已经有一段时间没有使用Java了,尤其是异常。我正在将ektorp couchdb集成添加到我正在研究的东西中。然而,我遇到了内容消费异常

该程序使用twitter4j,我正在获取我的状态并将其写入couchdb实例

public void putTweet(Status status)
{
    Map<String, Object> newTweetDoc = new HashMap<String, Object>();
    String docname = status.getUser().getName() + " "
            + status.getCreatedAt().toString();
    newTweetDoc.put("_id", docname);
    newTweetDoc.put("User", status.getUser().getName());
    newTweetDoc.put("Contents", status.getText());
    newTweetDoc.put("Created", status.getCreatedAt().toString());
    newTweetDoc.put("RetweetCount", status.getRetweetCount());
    UserMentionEntity[] mentions = status.getUserMentionEntities();
    Map<String, HashMap<String, String>> formattedMentions = formatMentions(mentions);
    newTweetDoc.put("Mentions", formattedMentions);
    db.addToBulkBuffer(newTweetDoc);
}
导致错误的是db.createdoc或flushBulkBuffer。以下是stacktrace:

Exception in thread "main" java.lang.IllegalStateException: Content has been consumed
at org.apache.http.entity.BasicHttpEntity.getContent(BasicHttpEntity.java:84)
at org.apache.http.conn.BasicManagedEntity.getContent(BasicManagedEntity.java:88)
at org.ektorp.http.StdHttpResponse.releaseConnection(StdHttpResponse.java:82)
at org.ektorp.http.RestTemplate.handleResponse(RestTemplate.java:111)
at org.ektorp.http.RestTemplate.post(RestTemplate.java:66)
at org.ektorp.impl.StdCouchDbConnector.executeBulk(StdCouchDbConnector.java:638)
at org.ektorp.impl.StdCouchDbConnector.executeBulk(StdCouchDbConnector.java:596)
at org.ektorp.impl.StdCouchDbConnector.flushBulkBuffer(StdCouchDbConnector.java:617)

我在上面看到两个独立的实体类都调用.getContent,我最近一直在使用我引用的库。它调用一个旧的apache Http库以及当前的?

CouchDbConnector是线程安全的,所以您不需要为每个操作重新创建它

我从未遇到过您的问题,您的用例非常简单,保存基本文档应该不会有任何问题


验证httpclient-4.1.1或更高版本是否在类路径中。

谢谢您的评论。下班回家后我会再检查一遍,但我很确定它的httpclient-4.1.4 plus内核和其他commons软件包。
Exception in thread "main" java.lang.IllegalStateException: Content has been consumed
at org.apache.http.entity.BasicHttpEntity.getContent(BasicHttpEntity.java:84)
at org.apache.http.conn.BasicManagedEntity.getContent(BasicManagedEntity.java:88)
at org.ektorp.http.StdHttpResponse.releaseConnection(StdHttpResponse.java:82)
at org.ektorp.http.RestTemplate.handleResponse(RestTemplate.java:111)
at org.ektorp.http.RestTemplate.post(RestTemplate.java:66)
at org.ektorp.impl.StdCouchDbConnector.executeBulk(StdCouchDbConnector.java:638)
at org.ektorp.impl.StdCouchDbConnector.executeBulk(StdCouchDbConnector.java:596)
at org.ektorp.impl.StdCouchDbConnector.flushBulkBuffer(StdCouchDbConnector.java:617)