原创不易,转载请标明地址,或者直接附上我的博客首页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下的黑洞!相关推荐

  1. 系统调优,你所不知道的TIME_WAIT和CLOSE_WAIT

    https://my.oschina.net/fdhay/blog/638631 高性能网络 | 你所不知道的TIME_WAIT和CLOSE_WAIT 2016-02-18 大房 大房说 本文是我将最 ...

  2. 你所不知道的日志异步落库

    https://www.cnblogs.com/scy251147/p/9193075.html 在互联网设计架构过程中,日志异步落库,俨然已经是高并发环节中不可缺少的一环.为什么说是高并发环节中不可 ...

  3. 被低估的css滤镜,你所不知道的 CSS 滤镜技巧与细节

    本文主要介绍 CSS 滤镜的不常用用法,希望能给读者带来一些干货! 系列 CSS 文章汇总在我的 Github ,持续更新,欢迎点个 star 订阅收藏. OK,下面直接进入正文.本文所描述的滤镜,指 ...

  4. 国际计算机思维比赛,少儿编程领域中,你所不知道的国际计算思维大赛

    原标题:少儿编程领域中,你所不知道的国际计算思维大赛 孩子学习编程,除了培养编程思维和计算思维,也能为未来应对人工智能时代打下基础.今天给大家讲的的是Bebras国际计算思维大赛,请大家持续关注坚果学 ...

  5. 你所不知道的setTimeout

    JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成.它们向任务队列添加定时任务.初始接触它的人都觉得好简单 ...

  6. 计算机键盘标注,你所不知道的 Windows 10 小诀窍:万能计算器、虚拟键盘、屏幕截图标注...

    原标题:你所不知道的 Windows 10 小诀窍:万能计算器.虚拟键盘.屏幕截图标注 Windows 10 里面有许多好用的小功能,只是藏得很深,平常你不一定会发现它,又或者可能是并没有特别标注出来 ...

  7. 你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)

    转http://www.cnblogs.com/zhijianliutang/p/4100103.html 前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的 ...

  8. 你所不知道的模块调试技巧 - npm link #17

    你所不知道的模块调试技巧 - npm link #17 1. 背景 node 应用开发中,我们不可避免的需要使用或拆分为 npm 模块,经常遇到的一个问题是: 新开发或修改的 npm 模块,如何在项目 ...

  9. 你真的会玩SQL吗?你所不知道的 数据聚合

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

最新文章

  1. Java的jar文件安装成windows 服务
  2. Python-生成模拟原始脑电数据
  3. EasyOffice-.NetCore一行代码导入导出Excel,生成Word
  4. CMakeList.txt的简介
  5. java 常用类 练习_Java常用类之String类练习
  6. unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL - 用于本地内部进程通讯的套接字。
  7. Status: Checked in and viewable by authorized users 出现在sharepoint 2013 home 页面
  8. Selenium操作cookie绕过验证码登陆实战
  9. 《勇者名录》11.19正式上线链游玩家|休闲养肝、探索大陆
  10. 机器学习中误差的定义,以及过拟合现象的介绍
  11. 计算机二级c语言考试总结,计算机二级考试C语言知识点总结 .doc
  12. 特征预处理和特征生成 (一)数字特征
  13. 卸载 windows 2003 自带 .NET Framework (dotnetfx cleanup tool)
  14. Java实现HighCharts纯后台图表生成
  15. 红米note4 android o,小米红米Note4/mido-LOS-安卓9.0.0-稳定版Stable2.0-来去电归属-农历等-本地化增强适配...
  16. 两个指针变量不可以做什么
  17. linux su命令_Linux Su命令示例教程
  18. Android Camera 四 Camera HAL 分析
  19. 佛山2000坐标-国家2000坐标双向重投影工具
  20. 仿真必修课:计算电磁学入门(附件参考文献与笔记)

热门文章

  1. VBScript 教程之数据库篇
  2. PowerDesigner中的对象与关系映射建模
  3. CodeForces - 137D Palindromes(dp+路径输出)
  4. CodeForces - 1252D Find String in a Grid(AC自动机)
  5. CodeForces - 1345E Quantifier Question(dfs实现拓扑序)
  6. s2-045 java_S2-045漏洞初步分析
  7. java比较两个对象重写,不重写equals进行两个对象间的深度比较
  8. 广义Fibonacci数列找循环节
  9. 从蓝桥杯来谈Fibonacci数列
  10. BZOJ3209(n的二进制表示中1的个数的乘积)