关于SpringBoot项目通过jar包启动之后无法读取项目根路径静态资源
前言:这个是昨天晚上在部署一个项目的时候发现的,在此记录一下
关于SpringBoot项目通过jar包启动之后无法读取项目根路径静态资源
问题描述
在部署了一个项目之后,打开项目页面进行测试,发现有一个查询页面查询失败了,自动跳转到错误页面,我看了看日志,发现是一个文件读取失败了,如下图:
报错信息
被读取文件所在目录
文件读取部分的代码
public String readFileContent() {File file = new File("src/main/resources/static/ticket/station_name.txt");BufferedReader reader = null;StringBuffer sbf = new StringBuffer();try {reader = new BufferedReader(new FileReader(file));String tempStr;while ((tempStr = reader.readLine()) != null) {sbf.append(tempStr);}reader.close();return sbf.toString();} catch (IOException e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e1) {e1.printStackTrace();}}}return sbf.toString();}
当时我挺懵批的,因为这个文件在本地测试的时候还是能读取到的,为什么到了服务器就找不到了呢???
解决方法
我上网查阅了一番,发现使用 File 在服务器中来获取本地资源是存在问题的。
原因:
Resources 目录下的文件是存在于 xxx.jar 这个文件里面,在服务器磁盘上是没有真实路径存在的,它其实是位于jar内部的一个路径。
解决方法一(笨方法):
将待读取的文件上传到服务器相应目录下,将读取的文件路径改成服务器上面文件对应的路径。
解决方法二:
使用输入流,如下:
public String readFileContent() throws Exception{String filePath = "static/ticket/station_name.txt";InputStream inputStream = null;BufferedReader reader = null;StringBuffer sbf = new StringBuffer();//文件读取inputStream = this.getClass().getClassLoader().getResourceAsStream(filePath);reader = new BufferedReader(new InputStreamReader(inputStream));String tempStr;while ((tempStr = reader.readLine()) != null) {sbf.append(tempStr);}reader.close();return sbf.toString();}
public String readFileContent() throws Exception{String filePath = "static/ticket/station_name.txt";ClassPathResource resource = new ClassPathResource(filePath);InputStream inputStream = null;BufferedReader reader = null;StringBuffer sbf = new StringBuffer();//文件读取inputStream = resource.getInputStream();reader = new BufferedReader(new InputStreamReader(inputStream));String tempStr;while ((tempStr = reader.readLine()) != null) {sbf.append(tempStr);}reader.close();return sbf.toString();}
这里要注意的是,使用的路径是 resources 底下的路径。
PS:也可以到我的个人博客查看更多内容
个人博客地址:小关同学的博客
相关文章:

JavaScript高级程序设计(第3版)第六章读书笔记
第六章 面向对象的程序设计 1. 数据属性 [[Configurable]]:表示能否通过delete删除属性从而重新定义属性。默认值为true。 [[Enumerable]]:表示能否通过for-in循环返回属性。默认值为true。 [[Writable]]:表示能否修改属性的值,默…

2022-2028年中国钢丸行业市场行情监测及未来前景规划报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢丸行业市场行业相关概述、中国钢丸行业市场行业运行环境、分析了中国钢丸行业市场行业的…

[MySQL]Every derived table must have its own alias
2019独角兽企业重金招聘Python工程师标准>>> 关于这条报错信息,意思是指每个派生出来的表都必须有一个自己的别名。 _mysql_exceptions.OperationalError: (1248, Every derived table must have its own alias) 如下两条select语句可以说明这个问题&am…

Java爬取解析去哪儿景点信息
前言:这两周在做 Web 课的大作业,顺便琢磨了一下如何使用 Java 从网上获取一些数据,现在写这篇博客记录一下。 PS:这里仅限交流学习用,如利用代码进行恶意攻击他网站,和作者无关!!&a…

用Unity和C#创建在线多人游戏学习教程
MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更准确) |时长:58节课(6h 41m) |大小解压后:6.1 GB 用Unity和C#创建在线多人游戏以及如何创建基于Turn的多人游戏…

bzoj 1040: [ZJOI2008]骑士 树形dp
题目链接 1040: [ZJOI2008]骑士 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3054 Solved: 1162[Submit][Status][Discuss]Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英。他们劫富济贫,惩恶扬善,受到社会…

2022-2028年中国钢桶行业市场研究及前瞻分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢桶行业市场行业相关概述、中国钢桶行业市场行业运行环境、分析了中国钢桶行业市场行业的…

在windows中创建一个影子用户
在windows中创建一个影子用户(看不到图请下载附件)我们可以在windows操作系统中建立一个影子用户,也就是它是实际存在的,但是不会在登录时或者用户组中显示,我们可以赋予影子用户管理员权限,可以在某些情况下管理员不可用时使用。…

PX4初级教程
链接:https://pan.baidu.com/s/1VIQcOQt-I5-evMx1jnV0ZQ 提取码:8niq

用Unity的视频广告创建2D动作游戏 Create Action 2D Game With Video Ads In Unity
MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更准确) |时长:27场讲座(4h 19m) |大小解压后:2.35 GB Unity 2D游戏开发终极指南 你会学到: 学习使用Unity Tile…

大话设计模式之简单的工厂模式
第一章:代码无错就是优-简单的工厂模式 先建立一个计算类Operation Operation.h文件 interface Operation : NSObjectproperty(nonatomic,assign)double numberA;property(nonatomic,assign)double numberB;end Operation.m文件 implementation Operationend 然后分…

Nginx学习3:反向代理实例
Nginx配置实例-反向代理1 目标 打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页面中 准备工作 我们在官网下载好tomcat之后,直接将tomcat的压缩包放到相应的目录下编译解压,然后进入tomcat的bi…

2022-2028年中国钢铁智能制造产业竞争现状及发展趋势分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢铁智能制造行业市场行业相关概述、中国钢铁智能制造行业市场行业运行环境、分析了中国钢…

exchange 2010 search mailbox 的幕后强大功能
铃……….半夜中被一阵急促的手机铃声吵醒,年度服务客户打来电话需要进行邮件的排查和删除工作。问其原因,原来是组织中有人发了一封关于领导的不健康的邮件,并在企业内部进行了转发,领导要求立即找出此类邮件并进行删除。管理员深…

无人机官网介绍
参考官网:http://dev.px4.io/master/en/index.html 程序在运行期间可以通过在shell端输入执行top指令查看哪些模块正在被执行,当运行模块时可以通过输入<moudles name> start/stop来实现模块的使用与停止。 PX4软件架构: 更新速率&am…

Unity从头开始开发增强现实(AR)游戏学习教程
使用Unity 2021构建增强现实飞镖游戏 学习从头开始开发增强现实(AR)游戏,使用AR基金会,货币化,发布游戏玩商店 Build a Augmented Reality Dartboard Game with Unity 2021 你会学到什么 使用Unity2021从头开始学习增强现实。 构建一个AR飞镖…

IDEA的CPU占用率高问题解决方法
前言:这段时间发现 IDEA 的 CPU 占用率猛涨,时不时就飙升到百分之7、80,使得敲代码的体验感十分不佳,在经过一番查找之后终于解决了问题,在此记录一下 IDEA的CPU占用率高问题解决方法 问题定位 我们先定位一下为什么I…

消息队列之库存扣减
转载于:https://www.cnblogs.com/work-at-home-helloworld/p/5230894.html

2022-2028年中国钢铁冶炼行业市场研究及前瞻分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢铁冶炼行业市场行业相关概述、中国钢铁冶炼行业市场行业运行环境、分析了中国钢铁冶炼行…

Microsoft Build 2015
没本事去旧金山,只能默默的守在笔记本前看了…… 首先Azure在全球有19个数据中心了,终于超过亚马逊了,好样的!过去12个月Azure有超过500个新功能上线,每月用户增长9万。Azure将会越来越成熟了,只可惜我现在…

开源飞控PX4简介
介绍: https://docs.px4.io/master/zh/flight_controller/pixhawk4.html无人机飞控基本装配参考: https://docs.px4.io/master/zh/assembly/下载地面站链接(QGC地面站): http://qgroundcontrol.com/downloads/

Unity视觉效果图初学教程 Unity Visual Effects Graph for Beginners
面向初学者的Unity视觉效果图介绍 你会学到: 学生将学习使用视觉效果图来创建效果 MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更准确) |时长:39节课(4h 42m…

nonatomic, retain,weak,strong用法详解
strong weak strong与weak是由ARC新引入的对象变量属性ARC引入了新的对象的新生命周期限定,即零弱引用。如果零弱引用指向的对象被deallocated的话,零弱引用的对象会被自动设置为nil。property(strong) MyClass *myObject;相当于property(retain) MyClas…

“ Error:(1, 1) java: 非法字符: ‘\ufeff‘ ”错误的解决方法
前言:今天为了做作业,在 github 上面下载了个项目,然后在运行项目时发现报错,在此记录一下 “ Error:(1, 1) java: 非法字符: ‘\ufeff’ ”错误的解决方法 发生原因 这个项目从目录的结构可以很明显地看出是使用 Eclipse 开发的…

2022-2028年中国钢铁电商产业竞争现状及发展前景预测报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢铁电商行业市场行业相关概述、中国钢铁电商行业市场行业运行环境、分析了中国钢铁电商行…

java开发webservice的几种方式
为什么80%的码农都做不了架构师?>>> webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录。 1.Axis2 Axis是apache下一个开源的webservice开发组件,出现的算是比较早了&a…

改变gazebo背景颜色
修改这里:

【Unity教程】创建一个完整的驾驶游戏
专业游戏设计 你会学到什么 在unity HDRP创建一个完整的驾驶游戏 定制不同类型的汽车 将人工智能汽车和人工智能航路点系统添加到你的赛道上 添加汽车展厅菜单以解锁和购买新车 在Blender中设计自己的赛道 易于理解的编码使游戏工作 流派:电子学习| MP4 |视频:h264,…

哈夫曼编译码器
前言:又到了学校一年一度的数据结构课设的日子,经不住学弟学妹热心地“询问”我数据结构课设的内容,我就在这里把我之前数据结构课设做的东西总结一下 哈夫曼编译码器 我课设选择的题目是哈夫曼编译码器,类似于我们平时用的解压缩…

Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)
题意: 线段树做法 分析: 因为每次都是在当前位置的前缀区间查询最大值,所以可以直接用树状数组优化。比线段树快了12ms~ 代码: #include<cstdio> #include<cmath> #include<iostream> #include<algorithm>…