2009-11-19 12 views
6

İçeriği Google sitelerinde güncellemeye çalışıyorum ve VersionConflictException istisnasında akışı okuyorum.Neden ItemSkippedException?

Akışı kontrol ettiğimde her şey yolunda ve POST isteğinde tamamen yüklenir, ancak sonra aşağıdaki hatayı alırım.

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

hey, aynı zamanda da arıyorum. Bir çözüm buldun mu? –

cevap

7

FileItemStream.ItemSkippedException Bu özel durum

bir girişim FileItemStream.openStream ile ( iade edildi InputStream) veri okumak yapılmış ise, sonra Iterator.hasNext(), FileItemStream öğesini oluşturan yineleyici üzerinde çağrıldı.

+0

İyi, ancak nasıl çözülür – dhaval

+0

istisnası (it.hasNext()) içine atılır ve akış yakalamada kullanılır. Yakalamak için harekete geçtiğinde bir gizem olan hasnext'e nasıl geri döner? – dhaval

+0

Twitter: Bu hatayı nasıl önleyebiliriz? –

0

Zombileri uyandırmak istemiyorum - bu sadece gelecekteki başvurular içindir.

Bu temelde apache-commons-fileupload'un kötü bir şekilde uygulanmasıdır. hasNext() numaralı telefonu çağırmak, ASLA son next() aramasının sonucunu geçersiz kılar. Örneğin. Listede herhangi bir öğeye erişmek eğer bir ItemSkippedException sonuçlanacaktır Çünkü bu

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

gibi bir şey yapamaz.

-1

Yineleme sırasında akışı kapattığımda bunu elde ederdim. Akışı kapatmayın ve iyi çalışıyor.

0

Aynı problemi aldım. 'Streams.asString (stream)' kelimesini iki kez çağırmaktan kaynaklandığını gördüm. Dosya yükleme kaynak kodunun gözden geçirilmesi, Streams.asString() işleminin sonunda akışı kapatır, böylece aynı akışla tekrar çağırırsanız, bu arada FileItemStream.openStream() öğesinden elde edilen InputStream olan bir yöntemdir. bu istisnayı al. Programımı tamir ettim ve şimdi istediğim gibi çalışıyor!

+0

Kodu nasıl düzelttiniz? – sairn

-1

Bana olanları burada bulabilirsiniz. Bunun beni bu hata atma neden olduğu IntelliJ içinde "İzle Ekle" Idea e

FileItemStream.openStream() 

eklendi çünkü bu hatayı alıyordum. Hata ayıklama sırasında izlemek için bunu eklemeyin.