Странное IOException при буферизации inputStream в Java - PullRequest
1 голос
/ 26 февраля 2011

У меня странная проблема, связанная с буферизацией inputStream файлов pdf и odt.Они не такие большие, всего 5-15 страниц, но всегда заканчиваются так:

java.io.IOException: Stream closed
    at java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:134)
    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 java.io.FilterInputStream.read(FilterInputStream.java:90)

Вы можете увидеть исходный код здесь .Я спрашиваю здесь, потому что это, похоже, не проблема Apache Tika, а скорее проблема JVM.

РЕДАКТИРОВАНИЕ: Извините, ребята, за такой глупый вопрос, это было 4 утра :-) Проблема была в том, что 4из 5 тестов не удалось, поэтому я ожидал, что загрузчик классов найдет эти ресурсы, но это не так.Была опечатка "файл / файлы" ... Все еще не понимаю, почему один из них прошел

Ответы [ 2 ]

2 голосов
/ 26 февраля 2011

Маловероятно, что это проблема библиотеки классов JVM / Java.Это будет либо ваш тестовый случай, либо Tika, который виноват.

Исключение возникает, когда что-то пытается прочитать из потока, который уже был закрыт.И стандартные потоковые классы не закрываются сами собой.


Если бы я собирался выяснить, в чем реальная проблема, я бы запустил один из тестовых случаев с использованием отладчика, установив точку остановаBufferedInputStream.close() и попытайтесь выяснить, где и почему он вызывался.

2 голосов
/ 26 февраля 2011

Извините, что задаю очевидный вопрос, но доступны ли файлы ресурсов, которые вы пытаетесь загрузить, в пути к классам теста?

String resourceLocation = "file/Designandrealizationofanintranetportal.pdf";
...