打成jar 包以后,运行时找不到文件路径?

报错信息:
FileNotFoundException。。。。。。。

原因:
打成jar包后,路径src/*可能都找不到了。
使用命令,查看jar包内的结构及文件路径:

tar -tf XX.jar

你会看到目录结构:

META-INF/
META-INF/MANIFEST.MF
main/
main/java/
main/java/AudioPlayer.class
main/java/Xnel$1.class
main/java/Xnel$2.class
main/java/Xnel$3.class
main/java/Xnel.class
main/java/XX.class
main/java/XSX$1.class
main/java/XSX.class
.DS_Store
img/
img/female.png
img/male.png
sounds/
sounds/background_music.wav

解决方法:

1.修改获取文件的方式。
采用stream流的方式获取音频。

InputStream resourceStream = getClass().getClassLoader().getResourceAsStream("sounds/background_music.wav");

采用Stream流方式获取图片。

// 使用 InputStream 加载图片
InputStream inputStream = getClass().getClassLoader().getResourceAsStream(imagePath);
// 将 InputStream 转换为 byte 数组
byte[] imageData = inputStream.readAllBytes();
// 使用 byte 数组创建 ImageIcon
ImageIcon icon = new ImageIcon(imageData);
Image image = icon.getImage();

2.打包的时候把resources中的文件打包。

jar -cvfm X.jar MANIFEST.MF -C out . -C src/main/resources/  .

3.运行jar包,你就可以正常运行jar包了。

java -jar XX.jar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值