Я пытаюсь прочитать байты изображения PNG, связанного с ресурсами JAR. Файл находится в каталоге src/main/resources
.
Вот мой код:
byte[] bytes = {};
final InputStream defaultImageStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/defaultLogo.png");
new DataInputStream(defaultImageStream).readFully(bytes);
Код выполняется на сервере Wildfly 12, расположенном в JAR, включенном в EAR как EJB.
Кажется, что вместо того, чтобы извлечь ресурс, который я запрашивал, getResourceAsStream
возвращает вложенную банку:
![enter image description here](https://i.stack.imgur.com/vRmbE.png)
Как я могу получить это изображение?
Дополнительная информация:
- Я пытался использовать как взорванный, так и не взорванный JAR в EAR. Те же результаты.
- Путь к ресурсу кажется правильным. Префикс перед "/ resources" заканчивается в методе, возвращающем NULL.
- Я попытался использовать загрузчик классов Class вместо контекста потока. Те же результаты.
- Я предполагал пройти через все записи в прилагаемом JAR-файле самостоятельно, но это кажется излишним и сложным: поскольку у меня есть
JarInputStream
и нет JarFile
, как бы я прочитал данные, соответствующие записи?