maven工程读取resource资源文件(踩坑)
目录
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资源文件(踩坑)相关推荐
- 关于maven的plugin插件问题(踩坑)
关于maven的plugin插件问题(踩坑) 今天几乎花了一整天的时间来弄插件的问题 特此来复盘一下,没想到不起眼的plugin竟然困扰了我一天 文章目录 关于maven的plugin插件问题(踩坑) ...
- JNI读取assets资源文件
源自:http://www.rosoo.net/a/201112/15459.html assets目录底下的文件会被打包到一个apk文件里,这些资源在安装时他们并没被解压,使用时是直接从apk中读取 ...
- Maven打包Excel等资源文件损坏问题
最近在做一个Excel导出的功能,由于导出Excel的表格样式比较复杂,所以使用了POI的Excel模版功能.我将模版存放在 /src/main/resources/template 目录下,这也就引 ...
- Maven打包导致Excel资源文件损坏问题
正解,忽略某些后缀文件: <build><plugins><plugin><groupId>org.apache.maven.plugins</g ...
- oracle vm 加载ova,vmware导入ova文件踩坑记小结
问题来源 众所周知,所有的网络行为都会产生相应的网络流量,那么所有的网络攻击行为也有其对应的流量特点,那么是否能根据流量特点进而分析出其对应的是什么攻击行为呢? 我在虚拟机上使用vulnhub的靶场环 ...
- android打包名字,使用jenkins为android工程打包,支持多包名,改资源(踩坑指南)...
需求 上一篇文章主要写了打包刚开始的配置和参数化构建.这篇文章主要讲一讲在改包名.改资源的打包实践中,常会碰到的问题以及解决办法.如果看博客的人有更好的解决办法,也可以找我交流,关于页面有我联系方式. ...
- java resources目录 编码_关于Java项目读取resources资源文件路径
在看此篇博客是建议清楚classpath代表的路径,getServletContext().getRealPath("/")的含义,idea中项目编译后的目录格式,resoures ...
- 第十三章 读取游戏资源文件
"从零开始系列又回来了"-- 本来,老邢已经决定结束这一系列文章的写作了,却意外收到了毓彦的邀请,希望能够把这些文章结集出版,虽然出版很麻烦,但有机会将自己的文字付梓却是一件令人兴 ...
- SpringBoot - resource资源文件的打包配置详解(指定资源文件位置)
一.问题描述 (1)默认 Spring Boot 项目结构,资源文件放置在 src/main/resources 中,测试的资源文件在 src/test/resources 中. src/main/r ...
最新文章
- linux系统管理命令--系统测试工具
- “懒惰”Linux 管理员的 10 个关键技巧
- Android NDK: WARNING: APP_PLATFORM android-9 is larger than android:minSdkVersion问题
- 重载和const形参
- flink中各种图的原理(还没搞完)
- 如何在 IIS 中设置 HTTPS 服务
- dicom传图像故障
- ggplot 非常难调的参数
- 机器学习实战Ch02: k-近邻算法
- 相机参数及坐标系变换关系(增补)
- ESP8266(2)
- 【随笔】Linux drop_caches
- 微信小程序 全局状态管理 ,响应式
- 计算机中丢失cg,【计算机中丢失dll文件】计算机丢失dll文件_计算机中丢失cg dll-win7之家...
- 数学建模python实现基础编程练习4
- 计算机毕业设计springboot交通事故档案管理平台ryug8源码+系统+程序+lw文档+部署
- Julia ---- 为Julia做一下辩解
- 功能强大、多合一,Java性能调优VisualVM多合一工具
- STM32中断(外部中断和定时器中断)
- 判断这一天是这一年的第几天? 的三种方法! Java
热门文章
- FreeMind 思维导图的使用
- TWaver HTML5 高性能拓扑
- 增值电信业务经营许可证怎么办理icp许可证
- java pptx,使用Java将文件.pptx转换为.ppt
- Android仿微信朋友圈查看全文/收起功能(雷惊风)
- 计算机中ppt,计算机中的数.ppt
- android 高德静态地图api,静态地图-API文档-开发指南-Web服务 API | 高德地图API
- 外包怎么了?请不要“妖魔化”它。
- ws2812 程序设计与应用(1)DMA 控制 PWM 占空比原理及实现(STM32)
- ubuntu 禁用触摸板