Собственный образ GraalVM как читать файл ресурсов из Jar
У меня есть файл jar, содержащий текстовый файл внутри, я пытаюсь загрузить файл как:
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
Это не работает как ошибка, показывающая:
[SUB] java.lang.NullPointerException
[Thu Aug 27 12:07:48 SGT 2020][INFO] [SUB] at java.io.Reader.<init>(Reader.java:167)
[Thu Aug 27 12:07:48 SGT 2020][INFO] [SUB] at hellofx.HelloFX.readFileAsStringFromJar(HelloFX.java:116)
[Thu Aug 27 12:07:48 SGT 2020][INFO] [SUB] at hellofx.HelloFX.test(HelloFX.java:107)
Если я попытаюсь извлечь файл ресурсов в путь к классам src/main/resources
, то он работает нормально.
Мой вопрос: можем ли мы прочитать файл ресурсов из Jar (при работе в собственном образе GraalVM)? Существует множество сторонних библиотек Java, которые читают файлы ресурсов, которые собраны вместе в одном Jar, как мы можем это преодолеть?
PS обновление:
это действительно моя ошибка, путать с class.getResource()
а также class.getClassLoader().getResource()
. Один требует косой черты в начале, а другой не позволяет. Как только я убрал косую чертуpath
переменная, работает нормально.
1 ответ
Вам нужно указать в собственном образе, какие ресурсы включить через -H:IncludeResources=path
. Значение может быть регулярным выражением.
См. Документацию для более подробной информации: https://github.com/oracle/graal/blob/master/substratevm/Resources.md