报错信息:
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