在尝试读取与JAR资源捆绑在一起的PNG图像的字节时,我很费劲。该文件位于src/main/resources
目录中。
到目前为止,这是我的代码:
byte[] bytes = {};
final InputStream defaultImageStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/defaultLogo.png");
new DataInputStream(defaultImageStream).readFully(bytes);
该代码在Wildfly 12服务器上执行,该服务器位于EAR中作为EJB包含的JAR中。
getResourceAsStream
似乎没有检索我要的资源,而是返回了封闭的jar:
如何获取该图片?
其他信息:
JarInputStream
而没有一个JarFile
,我将如何读取与一个JAR对应的数据条目?答案 0 :(得分:2)
我认为您的代码按预期工作。查看DataInputStream实例不会告诉您太多信息。看内容,我想这就是你想要的图像。
答案 1 :(得分:-1)
您的想法正确,JarInputStream
将为您服务。
您的代码应如下所示-
try {
JarInputStream jarIS = new JarInputStream(new FileInputStream(
"jarfilePath"));
JarEntry entry = null;
while ((entry = jarIS.getNextJarEntry()) != null) {
String name = entry.getName();
if (name.endsWith("defaultLogo.png")) {
System.out.println( "You got the PNG File"+entry.getAttributes().toString() );
//Now handle your stream as per your requirement.
}
}
} catch (Exception e) {
}