JSONParser getResourceAsStream - PullRequest
       5

JSONParser getResourceAsStream

1 голос
/ 28 июня 2010

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

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

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

Точная проблема:

Исключение в потоке "main" java.lang.NullPointerException
на java.io.Reader. (Reader.java:61)
at 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' равна нулю, и я думаю, именно поэтому NullPointException, но я не знаю, как ее решить.

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

Заранее.

Ответы [ 2 ]

2 голосов
/ 28 июня 2010

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

Ваш 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() метод, хотя реальная проблема заключается в получении содержимого файла в виде потока, независимо от того, как вы это делаете.

1 голос
/ 28 июня 2010

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

Проект - свойства - Источник

Там я был в Myproject / src / main/ resources Exclude **.

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

Теперь все в порядке.В любом случае, спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...