Не удается получить доступ к файлам в папке ресурсов - PullRequest
0 голосов
/ 06 марта 2020

Я создал новый модуль в Intellij со структурой каталогов следующим образом: new-module -> sr c -> main -> java -> config -> resources -> ConfigResources. java new-module -> sr c -> main-> resources -> config -> resources -> config.properties

Когда я собираю свой проект intellij, я вижу, что ресурс файл правильно копируется в каталог «out / production / resources»

Теперь, когда я пытаюсь получить доступ к этому файлу с помощью следующего кода, он возвращает ноль: ConfigResources.class.getResourceAsStream("config.properties")

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

Что еще я пробовал:

  1. ClassLoader.class.getResource()
  2. Скопировал файл свойств в сам каталог java, но после того, как папка классов сборки содержит классы, а файл свойств скопирован в папку ресурсов
  3. Я пытался указать относительный путь из папки ресурсов, но он тоже не работал
  4. Вручную скопировал файл в папку классов, тогда он работает (очевидно!)

Как я могу получить доступ к файлу ресурса? (Это простой проект, использующий java 11). Нужно ли мне устанавливать какие-либо настройки в intellij или нужно что-то включать в мой файл build.gradle?

1 Ответ

0 голосов
/ 06 марта 2020
List<Document> docs = new ArrayList<>();
JSONParser jsonParser = new JSONParser();
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
InputStream is = classloader.getResourceAsStream(collectionName+".json");

try (Reader reader = new InputStreamReader(is)) {
    // Read JSON file
    Object obj = jsonParser.parse(reader);
    JSONArray documentArray = (JSONArray) obj;
    // Iterate over documentArray
    documentArray.forEach(doc -> {
        Document document = Document.parse(doc.toString());
        docs.add(document);
    });
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} catch (ParseException e) {
    e.printStackTrace();
}
return docs;

У меня тоже такая же проблема, но я исправил вот так, чтобы получить данные с ресурса

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