我在尝试读取与 JAR 资源捆绑在一起的 PNG 图像的字节时遇到了困难。该文件位于 src/main/resources 目录中。
这是迄今为止我的代码:
byte[] bytes = {};
final InputStream defaultImageStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/defaultLogo.png");
new DataInputStream(defaultImageStream).readFully(bytes);
该代码在 Wildfly 12 服务器上执行,该服务器位于作为 EJB 包含在 EAR 中的 JAR 中。
看来,getResourceAsStream
返回了封闭的 jar,而不是检索我请求的资源:
如何获取该图像?
其他信息:
- 我在 EAR 中尝试了爆炸式和非爆炸式 JAR。结果相同。
- 资源路径似乎正确。添加前缀“/resources”会导致方法返回 NULL。
- 我尝试使用类的类加载器而不是线程上下文的类加载器。结果相同。
- 我设想自己检查所附 JAR 的所有条目,但这似乎有点过分且困难:因为我有一个
JarInputStream
并且没有JarFile
,我该如何读取某个条目对应的数据?
最佳答案
我认为您的代码正在按预期工作。查看 DataInputStream 实例不会告诉您太多信息。看看内容,我想是你想要的图片。
关于java - 如何读取位于嵌套 JAR 内的图像资源的字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51024692/