当前位置: 首页 > 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
http://www.dtcms.com/a/173854.html

相关文章:

  • 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工具类
  • vue3搭建后台管理系统
  • 18个国内wordpress主题推荐
  • CSS分栏布局
  • Prometheus实战教程:k8s平台-使用文件服务发现案例
  • 依赖注入详解与案例(前端篇)
  • STM32--RCC--时钟
  • leetcode 24. 两两交换链表中的节点
  • Nacos源码—4.Nacos集群高可用分析三
  • 华为私有协议Hybrid
  • Java实用注解篇: @JSONField