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