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);