2010-06-28 4 views
1

Я работаю над проектом, и мне нужен ресурс. Я пытаюсь сделать это с помощью этого кода:JSONParser getResourceAsStream

InputStream является = JSONParser.class.getResourceAsStream ("a.json");
Строка jsonTxt = IOUtils.toString (is);

Файл a.json находится в главном файле проекта.

Точная проблема заключается в:

Исключение в потоке "основного" java.lang.NullPointerException
на java.io.Reader (Reader.java:61)
на java.io.InputStreamReader (.. InputStreamReader.java:55)
на org.apache.commons.io.IOUtils.copy (IOUtils.java:1049)
в org.apache.commons.io.IOUtils.toString (IOUtils.java:359)
на com.playence.parser.JSon.main (JSon.java:28)

Отладка, я увидел, что переменная 'is' имеет значение null, и я думаю, поэтому NullPointException, bugt, я не знаю, как ее решить.

Любая помощь?

Заблаговременно.

ответ

1

Наконец-то я нашел свою проблему, и я решил ее.
Это было связано с моей конфигурации Затмения:

Project - propperties - Источник

Там я имел в MyProject/SRC/основные/ресурсы Исключить **.

Таким образом, файлы в этом каталоге не были в классах. Я решил, что он просто помещает Exclude (None).

Теперь все в порядке. Спасибо вам!

2

У вас есть исключение, потому что a.json не может быть найден вашим Class.getResourceAsStream(), и в этом случае он возвращает null вместо потока.

Ваш a.json файл должен быть в том же пакете, что и класс JSONParser, как у вас есть. Это один из ваших классов или является утилитой из внешней библиотеки?

Если это библиотека, может быть, вы можете получить поток из класса, который находится в том же пакете a.json, а затем передать его в качестве параметра:

InputStream is = YourClassBesidesTheFile.class.getResourceAsStream("a.json"); 
String jsonTxt = IOUtils.toString(is); 

или, возможно, использовать полный путь к файлу , что-то вроде "/some/package/etc/etc/a.json":

InputStream is = JSONParser.class.getResourceAsStream("/some/package/etc/etc/a.json"); 
String jsonTxt = IOUtils.toString(is); 

Чтобы решить эту проблему, файл должен быть найден методом Class.getResourceAsStream() хотя реальная проблема заключается в том, не извлекая содержимое файла в виде потока, независимо от того, как вы сделаете это.

+0

Я поместил файл в src/main/resorces, а также Y попытался поместить его в тот же файл, который вызывает его класс, но я получаю ту же ошибку. Ввод строки отверстия также является тем же результатом. Возможно, это может быть проблема с ecplipse и библиотеками? –

+0

Кстати, я использую JSONParser, импортируя зависимости maven, у меня нет JSONParser.java в моем проекте. –

+0

@ mujer-esponja: Я вижу, вы используете папку src/main/resorces. Вы используете Maven? – 2010-06-28 14:24:27

Смежные вопросы