jar包运行,资源路径引用问题

Java项目
我的maven项目在idea运行能正常播放音乐,
但是打包成jar后,把jar复制到其它文件夹单独运行会报错,应该是路径的问题
请问应该怎么解决呢?

img

img

img

img

可以改成使用绝对路径,也可以把相对路径替换掉,一般都是把资源目录和jar包放在同一个目录下的,所以可以像下面这样写,亲测在linux和win的jar包运行起来都是没问题的。也可以改成其他朋友建议的使用配置文件来配置路径,这样更加灵活。

//jar包运行时读这个路径
private static String getMusicPath() {
    String path = AllKeyListener.class.getProtectionDomain().getCodeSource().getLocation().getPath();
    //把jar包名字替换成同目录下的另一个目录,一般都是把资源目录和jar包放在同一个目录下
    path.replaceAll("xxx.jar", "Music");
    return path;
}

把文件路径都写成绝对路径

路径能做成配置项就做成配置项,而不是代码中写死

不知道你的这个是否支持classpath方式获取路径,你可以试一下。
path改成"classpath:music/"


ClassPathResource classPathResource = new ClassPathResource("Music/ngm.mp3");
InputStream bis =classPathResource.getInputStream();

你试试用这种方式去读取文件呢