Java 从 Jar 中的资源加载
Java Load From Reasource In Jar
我在从 eclipse 中的资源加载文件时遇到了一些困难。在 IDE 中,加载工作正常。在编译后的 jar 中,一切都崩溃了。
这适用于加载 jar 内部和外部的图像:
ImageIO.read(this.getClass().getResourceAsStream("E.png"))
这仅适用于文件对象的 IDE(我知道它很乱):
File f = new File(Thread.currentThread().getContextClassLoader().getResource("Overworld.mp3").getPath().replace("%20", " "));
我希望有一个文件对象 File(InputStream) 的构造函数,这样我就可以使用第一种方法为文件加载图像(到目前为止工作完美)。然而,这并不存在。
是否有任何其他方法可以将文件加载到文件对象中,使其在 IDE 和已编译的 jar 中工作?
提前致谢。
(单独但相关的问题:为什么 File f = new File(this.getClass().getResource("Overworld.mp3").getFile());
给出 MEDIA_UNAVAILABLE 异常?该文件与 "E.png" 与我项目中的所有其他源文件位于同一个包中)
getResourceAsStream()
returns 一个 java.io.InputStream
可以用来读取 jar 中的资源内容作为字节数组。
这对你有用吗?
为什么需要 java.io.File
?
另一种加载资源的方法 class/jar。
URL url = getClass().getClassLoader().getResourceAsStream(filePath);
我在从 eclipse 中的资源加载文件时遇到了一些困难。在 IDE 中,加载工作正常。在编译后的 jar 中,一切都崩溃了。
这适用于加载 jar 内部和外部的图像:
ImageIO.read(this.getClass().getResourceAsStream("E.png"))
这仅适用于文件对象的 IDE(我知道它很乱):
File f = new File(Thread.currentThread().getContextClassLoader().getResource("Overworld.mp3").getPath().replace("%20", " "));
我希望有一个文件对象 File(InputStream) 的构造函数,这样我就可以使用第一种方法为文件加载图像(到目前为止工作完美)。然而,这并不存在。
是否有任何其他方法可以将文件加载到文件对象中,使其在 IDE 和已编译的 jar 中工作?
提前致谢。
(单独但相关的问题:为什么 File f = new File(this.getClass().getResource("Overworld.mp3").getFile());
给出 MEDIA_UNAVAILABLE 异常?该文件与 "E.png" 与我项目中的所有其他源文件位于同一个包中)
getResourceAsStream()
returns 一个 java.io.InputStream
可以用来读取 jar 中的资源内容作为字节数组。
这对你有用吗?
为什么需要 java.io.File
?
另一种加载资源的方法 class/jar。
URL url = getClass().getClassLoader().getResourceAsStream(filePath);