13

我的代码:

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

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

4

2 回答 2

10

查看用于getResourceAsStream(...).

如果参数以 a 开头/,则资源的绝对名称是名称中/. 否则,绝对名称采用以下形式: modified_package_name/name 其中modified_package_name是此对象的包名称,/替换为.

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

于 2013-04-15T08:19:26.927 回答
0

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

检查罐子内的位置。

相对路径:当前包

绝对路径:jar 的根目录

于 2013-04-15T08:20:51.040 回答