2009-11-19 77 views
6

我在尝试更新Google网站中的内容,并正在读取异常VersionConflictException中的流。为什么ItemSkippedException?

当我检查流时,它都很好,并完全加载POST请求,但后来我得到以下错误。

org.apache.commons.fileupload.FileItemStream$ItemSkippedException 
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:880) 
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) 
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258) 
at java.io.BufferedInputStream.read(BufferedInputStream.java:317) 
at com.google.gdata.data.media.MediaSource$Output.writeTo(MediaSource.java:87) 
at com.google.gdata.data.media.MediaBodyPart$MediaSourceDataHandler.writeTo(MediaBodyPart.java:74) 
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:452) 
at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:157) 
at com.google.gdata.wireformats.output.media.MediaMultipartGenerator.generate(MediaMultipartGenerator.java:58) 
at com.google.gdata.wireformats.output.media.MediaMultipartGenerator.generate(MediaMultipartGenerator.java:37) 
at com.google.gdata.client.Service.writeRequestData(Service.java:1831) 
at com.google.gdata.client.media.MediaService.updateMedia(MediaService.java:497) 
at com.google.gdata.data.media.MediaEntry.updateMedia(MediaEntry.java:159) 
at morefile.UploadApp.updateAttachment(UploadApp.java:136) 
+0

嘿,iam也在寻找相同的东西。你有什么解决方案吗? – 2015-02-04 08:38:18

回答

7

FileItemStream.ItemSkippedException

抛出此异常,如果 试图读取来自 的InputStream,已经由FileItemStream.openStream(返回 )数据,后 Iterator.hasNext()已在 迭代器上调用,该迭代器创建了 FileItemStream。

+0

好,但是如何解决呢 – dhaval 2009-11-19 09:17:45

+0

异常是在 while(it.hasNext())中抛出的,并且该流在catch中被使用。 hasnext一旦被抓住就会如何回归是一个谜团? – dhaval 2009-11-19 09:21:09

+0

@jitter:我们如何避免这个错误 – 2015-02-04 08:38:58

0

我不想唤醒僵尸 - 这只是为了将来的参考。

这实际上是apache-commons-fileupload的一个不好的实现。调用hasNext()应该从不渲染结果最后next()调用无效。例如。你不能做这样的事情

List collection; 
while(hasNext(){ 
    Object o = next(); 
    collection.add(o); 
} 

因为如果你在列表中访问任何项目将导致ItemSkippedException

-1

我曾经在迭代过程中关闭流时使用此功能。不要关闭流,它可以正常工作。

0

我得到了同样的问题。我发现它是由两次调用'Streams.asString(stream)'引起的。查看文件上传源代码,Streams.asString()将在操作结束时关闭流,因此如果您再次使用相同的流(即顺序从FileItemStream.openStream()获得的InputStream)调用它,您将得到这个异常。修正了我的程序,现在按照我的意图工作!

+0

你是如何修复代码? – sairn 2013-06-25 19:07:26

-1

这是发生在我身上的事情。我得到这个错误是因为我在Intellij Idea中添加了“添加监视”,这就是为什么它向我抛出这个错误的原因。 不要在调试时添加此项。