getResourceAs运行.jar时流向文件路径

2022-09-04 22:10:55

我的代码:

BufferedInputStream bis =
  new BufferedInputStream(getClass().getResourceAsStream("playerhit.mp3"));

当文件与它所在的文件位于同一包中时,此代码可以正常工作。我以.jar运行它。如果我将文件路径更改为类似的东西,它不再起作用。在以.jar身份运行时,是否仍然可以访问与包的根目录不同的文件路径?playerhit.mp3MP3.class/src/data/audio/playerhit.mp3


答案 1

看看Javadoc for getResourceAsStream(...)

如果参数以 开头,则资源的绝对名称是名称中跟在 后面的部分。否则,绝对名称采用以下形式:其中 是替换为 的此对象的包名称。//modified_package_name/namemodified_package_name/.

因此,如果您位于包结构的根目录中,则应将其引用为 .如果它在 中,则可能应该使用 - 但请检查JAR文件的内容以确保。playerhit.mp3/playerhit.mp3/src/data/audio//data/audio/playerhit.mp3


答案 2

首先检查文件是否确实在jar中。

检查罐内的位置。

相对路径:当前封装

绝对路径:罐子的根