我的代码:
BufferedInputStream bis =
new BufferedInputStream(getClass().getResourceAsStream("playerhit.mp3"));
当playerhit.mp3
文件与运行它的MP3.class
包在同一个包中时,此代码可以正常工作。我将其运行为.jar。如果我将文件路径更改为类似/src/data/audio/playerhit.mp3
的内容,则它不再起作用。无论如何,在以.jar?
答案 0 :(得分:8)
看看Javadoc for getResourceAsStream(...)
。
如果参数以/
开头,则资源的绝对名称是/
后面的名称部分。否则,绝对名称具有以下形式:
modified_package_name/name
modified_package_name
是此对象的包名称,其中/
替换为.
。
因此,如果您的playerhit.mp3
位于包结构的根目录中,则应将其引用为/playerhit.mp3
。如果它在/src/data/audio/
中,您应该使用/data/audio/playerhit.mp3
- 但请检查您的JAR文件的内容以确定。
答案 1 :(得分:0)
首先检查文件是否实际存在于jar中。
检查罐子里面的位置。
相对路径:当前包
绝对路径:jar的根