目录

ClassLoader() 的作用

getClassLoader() 的作用

getResourceAsStream()方法详解


网上有问答如下:
问:
  new FileInputStream(“src/main/resources/all.properties”)
  new FileInputStream(“./src/main/resources/all.properties”)
  上面两个无法读取maven下资源文件目录下的文件嘛,总是提示找不到该路径,这么写错了嘛,但是我的其他maven可以读取

答:
  要取编译后的路径,而不是你看到的src/main/resources的路径。如下:
  URL url = MyTest.class.getClassLoader().getResource(“conf.properties”);
  File file = new File(url.getFile());
  或者
  InputStream in = MyTest.class.getClassLoader().getResourceAsStream(“conf.properties”);

第二种方法,也可以改成
  InputStream in = getClass().getClassLoader().getResourceAsStream(“conf.properties”);

同事的一种的写法是:
  InputStream in = getClass().getResourceAsStream(“conf.properties”);

  然后怎么也获取不到,最后才发现,只要添加了.getClassLoader()就可以了

后来遇到

Thread.currentThread().getContextClassLoader().getResourceAsStream("xx.pdf"); 

返回的是null


ClassLoader() 的作用

classLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象。

ClassLoader负责载入系统的所有资源(Class,文件,图片,来自网络的字节流等),通过ClassLoader从而将资源载入JVM 中。每个class都有一个引用,指向自己的ClassLoader。

getClassLoader() 的作用

  getClass():取得当前对象所属的Class对象 
  getClassLoader():取得该Class对象的类装载器
  类装载器负责从Java字符文件将字符流读入内存,并构造Class类对象,在你说的问题那里,通过它可以得到一个文件的输入

Class.getClassLoader()的一个小陷阱,空指针异常:

昨天我的code总在Integer.class.getClassLoader().getResource(“*********”);这一句抛出空指针异常,定位为getClassLoader()返回null,查了一下jdk的文档,原来这里还有一个陷阱:
  这里jdk告诉我们:如果一个类是通过bootstrap 载入的,那我们通过这个类去获得classloader的话,有些jdk的实现是会返回一个null的,比如说我用 new Object().getClass().getClassLoader()的话,会返回一个null,这样的话上面的代码就会出现NullPointer异常.所以保险起见我们最好还是使用我们自己写的类来获取classloader(”this.getClass().getClassLoader()“),这样一来就不会有问题。

getResourceAsStream()方法详解

getResourceAsStream()用法与getResouce()方法一样的,用getResource()取得File文件后,再new FileInputStream(file) 与 getResourceAsStream() 的效果一样。。

   InputStream inputStream1 = new FileInputStream(new File(Thread.currentThread().getContextClassLoader().getResource(”test.txt”).getFile()));//=============================InputStream inputStream2 = Thread.currentThread().getContextClassLoader().getResourceAsStream(”test.txt”);

maven工程读取resource资源文件(踩坑)相关推荐

  1. 关于maven的plugin插件问题(踩坑)

    关于maven的plugin插件问题(踩坑) 今天几乎花了一整天的时间来弄插件的问题 特此来复盘一下,没想到不起眼的plugin竟然困扰了我一天 文章目录 关于maven的plugin插件问题(踩坑) ...

  2. JNI读取assets资源文件

    源自:http://www.rosoo.net/a/201112/15459.html assets目录底下的文件会被打包到一个apk文件里,这些资源在安装时他们并没被解压,使用时是直接从apk中读取 ...

  3. Maven打包Excel等资源文件损坏问题

    最近在做一个Excel导出的功能,由于导出Excel的表格样式比较复杂,所以使用了POI的Excel模版功能.我将模版存放在 /src/main/resources/template 目录下,这也就引 ...

  4. Maven打包导致Excel资源文件损坏问题

    正解,忽略某些后缀文件: <build><plugins><plugin><groupId>org.apache.maven.plugins</g ...

  5. oracle vm 加载ova,vmware导入ova文件踩坑记小结

    问题来源 众所周知,所有的网络行为都会产生相应的网络流量,那么所有的网络攻击行为也有其对应的流量特点,那么是否能根据流量特点进而分析出其对应的是什么攻击行为呢? 我在虚拟机上使用vulnhub的靶场环 ...

  6. android打包名字,使用jenkins为android工程打包,支持多包名,改资源(踩坑指南)...

    需求 上一篇文章主要写了打包刚开始的配置和参数化构建.这篇文章主要讲一讲在改包名.改资源的打包实践中,常会碰到的问题以及解决办法.如果看博客的人有更好的解决办法,也可以找我交流,关于页面有我联系方式. ...

  7. java resources目录 编码_关于Java项目读取resources资源文件路径

    在看此篇博客是建议清楚classpath代表的路径,getServletContext().getRealPath("/")的含义,idea中项目编译后的目录格式,resoures ...

  8. 第十三章 读取游戏资源文件

    "从零开始系列又回来了"-- 本来,老邢已经决定结束这一系列文章的写作了,却意外收到了毓彦的邀请,希望能够把这些文章结集出版,虽然出版很麻烦,但有机会将自己的文字付梓却是一件令人兴 ...

  9. SpringBoot - resource资源文件的打包配置详解(指定资源文件位置)

    一.问题描述 (1)默认 Spring Boot 项目结构,资源文件放置在 src/main/resources 中,测试的资源文件在 src/test/resources 中. src/main/r ...

最新文章

  1. linux系统管理命令--系统测试工具
  2. “懒惰”Linux 管理员的 10 个关键技巧
  3. Android NDK: WARNING: APP_PLATFORM android-9 is larger than android:minSdkVersion问题
  4. 重载和const形参
  5. flink中各种图的原理(还没搞完)
  6. 如何在 IIS 中设置 HTTPS 服务
  7. dicom传图像故障
  8. ggplot 非常难调的参数
  9. 机器学习实战Ch02: k-近邻算法
  10. 相机参数及坐标系变换关系(增补)
  11. ESP8266(2)
  12. 【随笔】Linux drop_caches
  13. 微信小程序 全局状态管理 ,响应式
  14. 计算机中丢失cg,【计算机中丢失dll文件】计算机丢失dll文件_计算机中丢失cg dll-win7之家...
  15. 数学建模python实现基础编程练习4
  16. 计算机毕业设计springboot交通事故档案管理平台ryug8源码+系统+程序+lw文档+部署
  17. Julia ---- 为Julia做一下辩解
  18. 功能强大、多合一,Java性能调优VisualVM多合一工具
  19. STM32中断(外部中断和定时器中断)
  20. 判断这一天是这一年的第几天? 的三种方法! Java

热门文章

  1. FreeMind 思维导图的使用
  2. TWaver HTML5 高性能拓扑
  3. 增值电信业务经营许可证怎么办理icp许可证
  4. java pptx,使用Java将文件.pptx转换为.ppt
  5. Android仿微信朋友圈查看全文/收起功能(雷惊风)
  6. 计算机中ppt,计算机中的数.ppt
  7. android 高德静态地图api,静态地图-API文档-开发指南-Web服务 API | 高德地图API
  8. 外包怎么了?请不要“妖魔化”它。
  9. ws2812 程序设计与应用(1)DMA 控制 PWM 占空比原理及实现(STM32)
  10. ubuntu 禁用触摸板