Почему ItemSkippedException? - PullRequest
       8

Почему ItemSkippedException?

6 голосов
/ 19 ноября 2009

Я пытаюсь обновить контент на сайтах Google и читаю поток в исключительной ситуации VersionConflictException.

Когда я проверяю поток, все в порядке и полностью загружается в запросе 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)

Ответы [ 5 ]

8 голосов
/ 19 ноября 2009

FileItemStream.ItemSkippedException

Это исключение выдается, если сделана попытка прочитать данные из InputStream, который был возвращен FileItemStream.openStream (), после Iterator.hasNext () был вызван итератор, который создал FileItemStream.

0 голосов
/ 13 марта 2015

Вот что со мной происходит. Я получаю эту ошибку, потому что я добавил

FileItemStream.openStream()

в «Добавить часы» в Intellij Idea, поэтому он выдает мне эту ошибку. Не добавляйте это, чтобы посмотреть во время отладки.

0 голосов
/ 03 мая 2013

У меня такая же проблема. Я обнаружил, что это вызвано двойным вызовом Streams.asString (stream). Просматривая исходный код загрузки файла, Streams.asString () закроет поток в конце своей операции, поэтому, если вы вызовете его снова с тем же потоком, который, кстати, InputStream получен из FileItemStream.openStream (), получите это исключение. Исправил мою программу, и теперь она работает так, как я собирался!

0 голосов
/ 16 сентября 2012

Раньше я получал это, когда закрывал поток во время итерации. Не закрывайте поток, и он работает нормально.

0 голосов
/ 06 августа 2012

Я не хочу будить зомби - это только для справки в будущем.

Это в основном плохая реализация apache-commons-fileupload. Вызов hasNext() должен НИКОГДА сделать результат последнего next() вызова недействительным. Например. ты не можешь сделать что-то подобное

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

Потому что, если вы получите доступ к любому элементу в списке, это приведет к ItemSkippedException.

...