当前位置: 首页 > news >正文

打成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

相关文章:

  • WebRTC 服务器之SRS服务器性能优化配置
  • 在 GitLab 中部署Python定时任务
  • 私有仓库 Harbor、GitLab
  • 云计算训练营笔记day02(Linux、计算机网络、进制)
  • UE5 材质淡入淡出
  • 【工具使用-数据可视化工具】Apache Superset
  • 超表面加工流程
  • 前端知识-forwardRef
  • 区块链+数据库:技术融合下的应用革新与挑战突围
  • Kubernetes笔记(1)Kubernetes入门
  • 解锁RAG:AI 2.0时代的“知识外挂”是如何炼成的?
  • 开源之夏2025-VisActor 社区题目及参赛者选/培介绍
  • 当K8S容器没有bash时7种高阶排查手段
  • ESP32_IDF_idf.py指令详解
  • 阿里云前端Nginx部署完,用ip地址访问却总访问不到,为什么?检查安全组是否设置u为Http(80)!
  • Element-Plus-X开源程序是Vue3 + Element-Plus 开箱即用的企业级AI组件库前端的解决方案
  • 判断两个结构是否相同的一种方法
  • EasyRTC嵌入式音视频通信SDK技术,助力工业制造多场景实时监控与音视频通信
  • k8s service的类型
  • Stream和Collections工具类
  • 在海拔3980米驻守:“全国先进工作者”刘鹏与洛戈梁子警务站的9年
  • 中海油高管调整:刘永杰、刘小刚任副总裁
  • 河南博物院:警惕非官方网络平台 “买讲解保进馆” 等虚假信息
  • 看着不爽就滚蛋!郑州大学第一附属医院一科室公众号被曝运营人员辱骂他人
  • 两部门发布“五一”假期全国森林草原火险形势预测
  • 此前显示售罄的火车票“五一”前大量放出来了?12306回应