你所不知道的getResource()在maven下的黑洞!
原创不易,转载请标明地址,或者直接附上我的博客首页https://georgedage.blog.csdn.net/ ,当然最好私信一下,谢谢。
getResource接受一个字符串参数,如果以”/”开头,就在classpath根目录下找(不会递归查找子目录),如果不以”/”开头,就在调用getResource的字节码对象所在目录下找(同样不会递归查找子目录)。
光说不练,不行滴。上代码:
非maven结构
package com.jd.search;public class Test {public static void main(String[] args) {System.out.println(Test.class.getResource(""));System.out.println(Test.class.getResource("/"));System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");System.out.println(Test.class.getResource("george.class"));System.out.println(Test.class.getResource("/george.class"));System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");System.out.println(Test.class.getResource("dictionary.txt"));System.out.println(Test.class.getResource("/dictionary.txt"));System.out.println("**********************************");System.out.println(Test.class.getResourceAsStream("/"));System.out.println(Test.class.getResourceAsStream("/dictionary.txt"));}
}
结果展示:
【友情提醒】
这里做出建议,如果你不太好记住这个规则,就在进行加载路径时,进行一次输出,或者提前进行一个类似的小demo测试。免得¥,你懂得!!!
当然,本篇博客重点不是说这个,这个大家都懂,说的是,getResource()在maven下的黑洞!
期初用maven建了这个项目,就是去手写一个分词器。
然后呢?发现怎么搞都是空指针,空指针一个常见,也比较好解决的问题,然后我就进行了测试,最终发现了这个问题,写出来,以防各位,日后掉坑。
Maven结构
代码:
package com.jd.search;public class Test {public static void main(String[] args) {System.out.println(Test.class.getResource(""));System.out.println(Test.class.getResource("/"));System.out.println(Test.class.getResource("george.class"));System.out.println(Test.class.getResource("/george.class"));System.out.println(Test.class.getResource("dictionary.txt"));System.out.println(Test.class.getResource("/dictionary.txt"));System.out.println(Test.class.getResourceAsStream("/"));System.out.println(Test.class.getResourceAsStream("/dictionary.txt"));}
}
结果展示:
有心的可以将两次记过进行对比,或者自己敲一下demo。
这里为了方便大家。请看:上面的是非maven结构,下面的是maven结构:
为什么会出现这样的问题?
我将其归结为maven项目的运行机制导致的。这一点相信你仔细观察路径后也能发现。
还不是很了解的,或者有比较好的了解的,欢迎留言!
你所不知道的getResource()在maven下的黑洞!相关推荐
- 系统调优,你所不知道的TIME_WAIT和CLOSE_WAIT
https://my.oschina.net/fdhay/blog/638631 高性能网络 | 你所不知道的TIME_WAIT和CLOSE_WAIT 2016-02-18 大房 大房说 本文是我将最 ...
- 你所不知道的日志异步落库
https://www.cnblogs.com/scy251147/p/9193075.html 在互联网设计架构过程中,日志异步落库,俨然已经是高并发环节中不可缺少的一环.为什么说是高并发环节中不可 ...
- 被低估的css滤镜,你所不知道的 CSS 滤镜技巧与细节
本文主要介绍 CSS 滤镜的不常用用法,希望能给读者带来一些干货! 系列 CSS 文章汇总在我的 Github ,持续更新,欢迎点个 star 订阅收藏. OK,下面直接进入正文.本文所描述的滤镜,指 ...
- 国际计算机思维比赛,少儿编程领域中,你所不知道的国际计算思维大赛
原标题:少儿编程领域中,你所不知道的国际计算思维大赛 孩子学习编程,除了培养编程思维和计算思维,也能为未来应对人工智能时代打下基础.今天给大家讲的的是Bebras国际计算思维大赛,请大家持续关注坚果学 ...
- 你所不知道的setTimeout
JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成.它们向任务队列添加定时任务.初始接触它的人都觉得好简单 ...
- 计算机键盘标注,你所不知道的 Windows 10 小诀窍:万能计算器、虚拟键盘、屏幕截图标注...
原标题:你所不知道的 Windows 10 小诀窍:万能计算器.虚拟键盘.屏幕截图标注 Windows 10 里面有许多好用的小功能,只是藏得很深,平常你不一定会发现它,又或者可能是并没有特别标注出来 ...
- 你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)
转http://www.cnblogs.com/zhijianliutang/p/4100103.html 前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的 ...
- 你所不知道的模块调试技巧 - npm link #17
你所不知道的模块调试技巧 - npm link #17 1. 背景 node 应用开发中,我们不可避免的需要使用或拆分为 npm 模块,经常遇到的一个问题是: 新开发或修改的 npm 模块,如何在项目 ...
- 你真的会玩SQL吗?你所不知道的 数据聚合
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...
最新文章
- Java的jar文件安装成windows 服务
- Python-生成模拟原始脑电数据
- EasyOffice-.NetCore一行代码导入导出Excel,生成Word
- CMakeList.txt的简介
- java 常用类 练习_Java常用类之String类练习
- unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL - 用于本地内部进程通讯的套接字。
- Status: Checked in and viewable by authorized users 出现在sharepoint 2013 home 页面
- Selenium操作cookie绕过验证码登陆实战
- 《勇者名录》11.19正式上线链游玩家|休闲养肝、探索大陆
- 机器学习中误差的定义,以及过拟合现象的介绍
- 计算机二级c语言考试总结,计算机二级考试C语言知识点总结 .doc
- 特征预处理和特征生成 (一)数字特征
- 卸载 windows 2003 自带 .NET Framework (dotnetfx cleanup tool)
- Java实现HighCharts纯后台图表生成
- 红米note4 android o,小米红米Note4/mido-LOS-安卓9.0.0-稳定版Stable2.0-来去电归属-农历等-本地化增强适配...
- 两个指针变量不可以做什么
- linux su命令_Linux Su命令示例教程
- Android Camera 四 Camera HAL 分析
- 佛山2000坐标-国家2000坐标双向重投影工具
- 仿真必修课:计算电磁学入门(附件参考文献与笔记)
热门文章
- VBScript 教程之数据库篇
- PowerDesigner中的对象与关系映射建模
- CodeForces - 137D Palindromes(dp+路径输出)
- CodeForces - 1252D Find String in a Grid(AC自动机)
- CodeForces - 1345E Quantifier Question(dfs实现拓扑序)
- s2-045 java_S2-045漏洞初步分析
- java比较两个对象重写,不重写equals进行两个对象间的深度比较
- 广义Fibonacci数列找循环节
- 从蓝桥杯来谈Fibonacci数列
- BZOJ3209(n的二进制表示中1的个数的乘积)