1.pom包依赖

                <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.30</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency>

2.读取配置json文件

String path = getClass().getClassLoader().getResource("flt/test.json").getPath();path = path.replace("\\", "/");System.out.println(path);String input = null;JSONArray jsonArray = null;try {input = FileUtils.readFileToString(new File(path), "UTF-8");JSONObject jsonObject = JSONObject.parseObject(input);if (jsonObject != null) {jsonArray = jsonObject.getJSONArray("habby");System.out.println(jsonArray);}} catch (Exception e) {}System.out.println("kaishi:"+input);

读取json文件到此结束。

3.出现报空指针异常:这里主要有两种情况

(1):打成jar包后,读取的配置json文件为jar包里面的(这里只能使用流的形式去读取)

1.    InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("flt/test.json");input = IOUtils.toString(inputStream , "UTF-8");JSONObject jsonObject = JSONObject.parseObject(input);2. ClassPathResource resources = new ClassPathResource(path);resources.getInputStream();

其他方法也皆为流的形式,推荐使用上面的1方法。

(2): 打成jar包后,读取的配置json文件为jar包外面的。自定义的文件夹。主要难点:获取jar包所在文件路径

a. 此时主要错误为文件路径有错: demo版使用此方法  如下:

        System.out.println(System.getProperty("user.dir"));

使用获取系统变量的方法,获取当前运行jar包所在的路径: 例如 E:\webpack , 后面拼自己自定义的文件路径

b.获取jar包所在路径,正式版(需要会正确的打包)

  ApplicationHome h = new ApplicationHome(getClass());File jarF = h.getSource();System.out.println(jarF.getParentFile().toString());

分析原因:a.主要是因为springboot内置Tomcat。打包文件后。通过文件读取文件路径获取数据的方式行不通,因为无法直接读取压缩包中的文件,读取只能通过流的方式读取。这里还与类的加载器有关,常用的为appClassLoader,但打成jar包后,使用的是LoadClassLoader(在另一博客中看到。链接后续补上), 使用getContextClassLoader()方法使得加载类采用的是同父类加载器一致的加载器。则不会因类加载器不同导致报错。

参考链接:https://blog.csdn.net/liangcha007/article/details/88526181

实践了此次demo后,发现要学会如何使用maven打包。如使用 assembly打包。

如需要demo可以留言。

springboot读取resource下json文件出现空指针异常相关推荐

  1. Springboot 获取 resource 下的文件夹路径的坑

    现在有个需求是需要利用模板文件生成HTML 或者 PDF 文件,然后由于HTML 模板文件里面包含图片和字体,然后我就在resource 文件夹下新建了一个文件夹,然后又分类,也就是 resource ...

  2. springboot读取linux文件_spring\-boot以jar包方式时读取resource或是template文件 | Prayer's Laputa...

    现象 以jar包方式部署系统,想读取resource或是template下面的文件时,报 File Not Found 我遇到的情况是,整个项目达成了一个包,在开发环境(windows + idea) ...

  3. springboot读resource下的csv文件

    首先,有一个注意点就是,springboot项目最后打成一个jar包,tomcat容器内嵌在jar包里,我们从代码里去读resource下的文件的方式和传统的以web容器目录形式部署的服务器肯定是不一 ...

  4. SpringBoot读取Resources下文件

    问题: 需要读取resources下的文件,文件格式不定,这里以txt为例,主要说明路径问题: 一.使用项目内路径读取,该路径只在开发工具中显示,类似:src/main/resources/resou ...

  5. 解决springboot读取jar包中文件的问题

    解决springboot读取jar包中文件的问题 参考文章: (1)解决springboot读取jar包中文件的问题 (2)https://www.cnblogs.com/songxiaotong/p ...

  6. pyhton 读取目录下所有文件夹下的文件(指定文件)

    前言 1.有的时候比如我们操作错了,将一个文件夹里的.png图片都弄到了不同的文件夹中,现在想还原,如果一个个手工选择剪切,恐怕不是一个好办法. 2.有的时候,想把某个目录下的所有文件夹中的jpg格式 ...

  7. maven工程下 读取resource下配置文件

    在maven工程中,我们会将配置文件放到,src/main/resources   下面,例如 我们需要确认resource 下的文件 编译之后存放的位置 它编译的路径直接位于classes下面,这个 ...

  8. 微信小程序打开项目提示读取project.config.json文件失败

    前几天一个月薪35k的兄弟,给我推了一个人工智能学习网站,看了一段时间挺有意思的.包括语音识别.机器翻译等从基础到实战都有,很详细,分享给大家.大家及时保存,说不定啥时候就没了. 微信小程序打开项目提 ...

  9. c# 读取、写入json文件

    c# 读取.写入json文件 简介 使用 官方的 json net包进行操作 Newtonsoft.Json json文件 {"animals":{"dog": ...

最新文章

  1. android堆栈信息,android死锁致重启问题分析
  2. 近期活动盘点:设计与人工智能思享会、制造业的转型升级到产业跃迁思享会、瓜子二手车周洲讲座(10.30-11.1)...
  3. ((void *) 0)的含义和void的一些细节
  4. python自动化测试数据驱动_Python 自动化测试(四):数据驱动
  5. BBC News 2012-02-07
  6. MAC卸载java 12.0.2
  7. numpy 是否为零_一文看懂Numpy统计计算、数组比较
  8. jq中法可以发起ajax请求的方法有,jQuery实现监控页面所有ajax请求的方法
  9. 小米手机 - Charles无法安装证书 因为无法读取证书
  10. php自动tag,帝国cms自动增加TAG关键字教程
  11. Java学习之InputStream中read()与read(byte[] b)
  12. Java中使用正则表达式校验字符串
  13. android手机的短信文件,手机短信下载的文件在哪里(教你如何查看手机短信内容)...
  14. 三菱PLC 闪烁动作 ST语言
  15. 最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几
  16. 2020年12月电子学会青少年软件编程Scratch(二级)等级考试真题解析
  17. Android开发类似苹果iOS 7的沉浸式状态栏
  18. 微信公众号图文消息添加word附件教程详解
  19. 《征服老板:零基础做出高逼格PPT》笔记(二)
  20. “拼多多”惊爆重大Bug!程序员的眼泪,羊毛党的狂欢

热门文章

  1. ps4属于计算机吗,PS4可以连接电脑使用么?还是得买一个显示屏?或者电视?
  2. Spring Cloud Alibaba 官方中文文档
  3. PythonGUI工具 图片大小转换
  4. 湖南工学院 戴成秋 计算机,计算机与信息科学学院2021届本科毕业设计答辩实施方案...
  5. Excel VBA高级编程-SQL检索(一)
  6. python练习题-带答案
  7. 汇编语言 王爽 第四版 实验1
  8. SQL注入攻击的种类和防范方法
  9. XILINX FPGA数字信号处理——15、动态视频拼接原理及实现
  10. SVN 汉化(官网下载汉化包)