Собственный образ 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

Другие вопросы по тегам