maven工程读取resource资源文件(踩到了这个坑)

Maven jar 如何读取resource目录下的文件(read file in resource folder) Eclipse maven project, 对于新手的我,真是遇到不少问题。今天post一个小问题,读取resource目录下的文件。从Maven project推荐的目录结构中src/main/java 存放项目相关代码,src/main/resources存放配置相关的文件。可是,当打包以及读取resources下的文件的时候遇到些问题。 首先,发现resources目录下的东西没有被打进... 阅读详情

网上有问答如下:
问:
  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()就可以了


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() 的效果一样。。


给出示例 
两个代码效果一样

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

参考:https://www.cnblogs.com/acm-bingzi/p/mavenResources.html

https://blog.youkuaiyun.com/my__sun_/article/details/74450241


            </div>
【Spring Boot 3】读取resource文件 本文介绍开发Spring Boot应用如何读取resources目录下文件的内容。本文介绍了开发Spring Boot应用读取resources构造Spring实例,构造参数是resources目录下文件的相对路径;调用当前类的方法,方法参数是加上resources目录下文件的相对路径;调用Spring自动注入的对象的方法,方法参数是加上resources目录下文件的相对路径;调用Spring自动注入的对象的方法,方法参数是加上resources目录下文件的相对路径。 阅读详情

相关推荐

Docker部署OnlyOffice踩坑实录:解决editor.bin下载失败的3种姿势

本文详细解析了Docker部署OnlyOffice时editor.bin下载失败的常见原因,并提供了三种核心解决方案。重点剖析了容器网络配置、Nginx反向代理(特别是proxy_pass设置)以及安全策略调整,帮助开发者彻底解决静态资源加载问题,确保文档协作平台稳定运行。

weixin_29281941的博客 869

读取maven工程resource目录下的资源文件

在maven工程中,我们会将配置文件放到src/main/resources下面,我们需要确认resource 下的文件编译之后存放的位置。它编译的路径直接位于classes下面,这个路径其实就是classPath的路径,所以,在resources 根目录下的配置文件其实就是 classPath的路径。 public static void main(String[] args) throw...

tinysakura的博客 2418

NI USB-8506 LIN通讯配置全攻略:从驱动安装到NI MAX硬件检测

本文详细介绍了NI USB-8506设备的LIN通讯配置全流程,从驱动安装到NI MAX硬件检测。重点讲解了NI-CAN和NI-XNET驱动的安装避坑技巧,以及LIN通讯参数配置的实战经验,帮助用户快速掌握车载LIN总线通讯技术,提升工作效率。

weixin_29171087的博客 599

maven项目中读取resource 下面Mybatis配置文件的坑

maven中mybatis配置文件的路径见①读取mybatis配置文件的方式见②,读取方式见③。按照②中的路径去读取配置文件会出现不能找到配置文件的错误。 错误的原因:按照String resource = "/config/mybatis/mybatis-config.xml";这个路径是不能找到mybatis配置文件。我这里因为最前面有个"/",所以配置是绝对路径,打开项目的路径可以看...

apk_it的博客 2075

win10自动修复-无限循环【通用完美】超简单解决办法

2020.02.14今个我的笔记本电脑(Thinkpad Carbon 7 X1)(win10)早晨起来发现蓝屏,上面显示自动修复失败,重启后依然自动修复失败,不断手动重启,始终是修复失败。然后上网开始搜集资料找解决办法。 前边介绍关闭自动修复,如何找出错文件的方法;如果想看最终解决办法,直接看第三部分 上网就会发现这种现象很常见,同时是电脑自动安装系统更新,或者安装某些驱动出现。解决办法也大...

y15941300574的博客 19万+

Vivado 2018.3实战:用IDELAYE3和ISERDESE3搞定高速ADC数据采集(附仿真源码)

本文详细介绍了在Vivado 2018.3中使用Xilinx UltraScale架构的IDELAYE3和ISERDESE3原语实现高速ADC数据采集的实战方法。通过分析5GHz采样系统的时序挑战,提供从PCB布局到Vivado实现的完整解决方案,包括精密时序校准、多相位数据重组及系统级调试技巧,并附赠仿真源码助力工程师快速掌握高速数据采集技术。

weixin_30567225的博客 580

maven工程中读取resource目录下配置文件

在maven工程中,我们会将配置文件放到src/main/resources下面,例如 我们需要确认resource 下的文件编译之后存放的位置。 它编译的路径直接位于classes下面,这个路径其实就是classPath的路径,所以,在resources 根目录下的配置文件其实就是 classPath的路径。 public static void main(String[] ...

yinni11的博客 872

Shader之——花草动画shader

今天 ,接到了个需求,花草的动画。谈到花草动画,立马就想到顶点动画,让顶点动起来就可以实现了。但是有个问题,所有的草都往一个方向运动,这个就麻烦了。因为在shader里没有随机这种概念,提到最多的是用一张噪声图来模拟。在网上搜索了一下,发现有更好的办法,就是用每个顶点到一个点的距离来控制动画的开始,毕竟每个顶点到同一个点的距离很少是一样的。 float dis = distance ...

baicaishisan的博客 2182

Maven工程下读取resource下配置文件

Maven工程下读取resource下配置文件 在maven工程中,约定大于一切,规定把配置文件放在src/main/resources下面 然后查看经过maven编译后的项目结构,寻找配置文件的位置 发现配置文件位于classes下面,这个路径就是classPath的路径。所以,在resources根目录下的配置文件其实就是classPath的路径。 可以在读取文件的时候,直接写就好 InputStream in = JdbcUtils.class.getClassLoader().getResour

qq_38933832的博客 1027

【OpenClaw从入门到精通】第26篇:从0到1构建OpenClaw二次发行版——企业专属AI平台实战指南(2026实测)

本文基于OpenClaw 2026.3.7开源内核,聚焦企业级AI平台的二次发行构建,从技术原理、实操流程到商业落地提供完整方法论。核心围绕“内核层-能力层-产品层”三层架构,详解源码编译、私有化部署、企业级特性开发(数据合规、国产化适配、业务系统集成)、产品化包装等关键步骤,并通过审计行业“智审助手”虚拟实战案例具象化落地路径。文章兼顾新手入门与进阶提升,提供可直接复用的代码、配置文件及执行结果,解决企业对AI Agent“开箱即用”“数据不出域”“业务适配”的核心诉求,助力开发者快速打造企业专属AI平台

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 707

Raspberry Pi Pico + Inmp441麦克风(Pio模拟I2s)<2>

摘要:本文介绍了在Raspberry Pi Pico上使用PIO(Programmable I/O)接收I2S数字麦克风音频数据并保存为WAV文件的方法。项目采用双PIO状态机设计,一个生成I2S时钟信号(WS+SCK),另一个接收24位左声道数据并转换为16位格式。文章详细说明了接线方式、参数设置、WAV文件头构造、PIO汇编程序实现以及数据转换处理流程。项目在MicroPython环境下实现16kHz采样率、6秒时长录音,具有时序精确、稳定可靠的特性,并提供了进一步拓展的可能性,如双声道支持、实时频谱分

技术需要沉淀,需要碰撞。 657

maven intsall 结果项目resources 下文件无法编译到classes下

原因:pom.xml  修改了默认的  resources 配置修改了 maven默认的目录结构  

u013452337的博客 8415

低功耗设计:rush current

在power gating的设计中引入了一个rush current的概念,它的产生原因是switch cell上电过程相当于电容充电过程,会产生一个短期的大电流,称之为rush current。 1.rush current的危害 1)造成巨大的ir drop 2)导致功能错误 3)一些极端例子中,rush current会引发VDD短期崩溃,造成存储在retention register与mem中的数据失效 4)大电流会还对周围always on模块造成干扰,产生大的压降 2.控制rus

m0_61544122的博客 3070

怎么样读取maven工程resource目录下资源文件?

在maven工程中,我们会将配置文件放src/main/resources下,我们需确认resource下的文件编译之后存放的位置。它编译的路径直接位于classes下面,这个路径其实就是classPath的路径,所以,在resources 根目录下的配置文件其实就是 classPath的路径。 这里我们先看下maven项目结构,classes是我们的根目录/,dao文件夹下面有个OrderMapper.class类,OrderMapper.xml文件 现在我们开始通过OrderMapper.class类

龚小帅的博客 2720

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

maven工程读取resource资源文件(踩坑)

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

奇点 1660

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

maven项目读取resource中的文件,读取txt文件的内容

maven项目中,读取存放在src/main/resources中的文件my.txt 项目结构如图: import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.net.URL; import or...

weixin_43165220的博客 3037

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

总结从maven下resource文件夹读取文件的方法

总结从maven下resource文件夹读取文件的方法

qq_43747091的博客 733

maven工程读取resource资源文件

月光疾风的博客 1663

java maven 读取配置文件_maven工程读取resource下配置文件

maven工程读取resource下配置文件在maven工程中,我们会将配置文件放到,src/main/resources 下面,例如我们需要确认resource 下的文件 编译之后存放的位置它编译的路径直接位于classes下面,这个路径其实就是classPath的路径,所以,在resources 根目录下的配置文件其实就是 classPath的路径1 public static void ...

weixin_30125993的博客 2497

maven工程中读取resources中的资源文件

maven工程中读取resources中的资源文件

听海边涛声 1119

maven工程编译后不能读取resource文件

一、现象 运行maven工程报错,PropertiesUtil不能读取配置文件 Exception in thread "main" java.lang.ExceptionInInitializerError  at com.ailk.nbs.portal.autotest.util.BmsSocket.newUser(BmsSocket.java:14)  at com.ailk.nbs

chbddh的专栏 1830

(Java、Scala)读取IDEA maven项目resource下相对路径文件

在使用maven创建的项目中,在编译时会在项目下生成target文件夹,其下面的class文件夹里面生成src->main中的数据如resources中的文件或者是scala文件夹下面的.scala文件的“倒影”。 所以寻找文件的相对位置时,要先找到target这个目录下的地址,然后再找具体的文件。 如图所示,要读取resource下Excel文件夹下的Excel文件,target目录下已经...

weixin_44455388的博客 8096

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

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

fade 4万+
上一篇: log4j 用法,mark一下(经常忘)
下一篇: HttpClient引起的java.net.BindException: Address already in use: connect问题
github_38838414
博客等级 码龄9年 54粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值