问题描述:
在IDEA中进行结巴分词,报出如下错误:

从报错信息可以看出错误是由空指针异常引起的一个ExceptionInInitializerError错误,习惯性的没去分析就把错误往百度上一粘贴,一大堆的都是在讲静态初始化块的,看了几篇,没解决我的问题,其中个人觉得这篇文章讲静态初始化块是讲的比较好的,按我的方法没解决的朋友可以去看看:
https://blog.csdn.net/m0_38120325/article/details/89363407

网上没法解决,只好静下心来分析一下错误产生的原因:
首先可以从报错信息看出,错误是由空指针异常引起的,进入结巴分词源码对报错的地方逐个分析,最终定位在这句代码上

输出 is 看看,为空,那问题就出现在InputStream is = this.getClass().getResourceAsStream(MAIN_DICT);

在网上搜索了一下this.getClass().getResourceAsStream()的用法,原来Class.getResourceAsStream() 会指定要加载的资源路径与当前类所在包的路径一致。
例如你写了一个MyTest类在包com.test.mycode下,那么MyTest.class.getResourceAsStream(“name”)会在com.test.mycode包下查找相应的资源。
如果这个name是以 '/'开头的,那么就会从classpath的根路径下开始查找。

这下问题清晰了,我是把结巴分词的字典文件放错了地方,放在了src路径下,而IDEA的classpath路径应该是要放在resources目录下的。


具体文件和代码的位置是,代码在src/main/java目录下,资源文件在src/main/resources/目录下。

问题解决!!!

补充一下this.getClass().getResourceAsStream()的知识点:
具体文件和代码的位置是,代码在src/main/java目录下,资源文件在src/main/resources/目录下。

//拿不到资源,会从当前类的目录下去找,这个文件如果不和该类在一个目录下,就找不到。
InputStream is = this.getClass().getResourceAsStream(fileName);
// 拿到资源,会从编译后的整个classes目录下去找,maven也会把资源文件打包进classes文件夹,所以可以找到。
InputStream is = this.getClass().getResourceAsStream("/" + fileName);
//拿到资源,ClassLoader就是从整个classes文件夹找的,所以前面无需再加/。
InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileName); 

解决在IDEA中进行结巴分词产生Exception in thread “main“ ExceptionInInitializerError at ()错误相关推荐

  1. Exception in thread main java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static;只能在静态类型或顶级类型中才能声明静态方法

    Exception in thread "main" java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static:只能在静态类型或顶级类型中才 ...

  2. Eclipse 报 “Exception in thread main java.lang.OutOfMemoryError: Java heap space ”错误的解决办法

    Eclipse 报 "Exception in thread "main" java.lang.OutOfMemoryError: Java heap space &qu ...

  3. Eclipse 报 “Exception in thread main java.lang.OutOfMemoryError: Java heap space ”错误的解决办法...

    Eclipse 报 "Exception in thread "main" java.lang.OutOfMemoryError: Java heap space &qu ...

  4. 解决:Exception in thread main java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExe

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.报错: Exception in thread "main" java.la ...

  5. Exception in thread main java.lang.NoClassDefFoundError解决了

    Exception in thread "main" java.lang.NoClassDefFoundError   这个问题解决了!现总结如下 由于我是用JBuilder编写的 ...

  6. 解决:Exception in thread “main“ java.io.IOException: Failed on local exception: com.google.protobuf

    集群上提交运行jar包程序,出现如下错误: Exception in thread "main" java.io.IOException: Failed on local exce ...

  7. 已解决idea连接数据库异常:Exception in thread “main“ com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:

    Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You ...

  8. 关于jar包运行报错:Exception in thread “main“ java.lang.UnsupportedClassVersionError的解决办法

    打包jar包后 ,在jar路径下cmd使用命令 java -jar  jar包名字 报错: Exception in thread "main" java.lang.Unsuppo ...

  9. 【已解决】Exception in thread “main“ java.lang.IllegalArgumentExcept: illegal initialSize 6, maxActive 5

    Exception in thread "main" java.lang.IllegalArgumentException: illegal initialSize 6, maxA ...

最新文章

  1. 【每日一算法】使用二分法解决x 的平方根问题
  2. qps是什么意思_面试官:说说你之前负责的系统,QPS 能达到多少?
  3. (转)动态Entity Framework查询:Dynamic Query 介绍
  4. 顺网无盘服务器木马,无盘顺网虚拟服务器设置
  5. Python:for的多种写法
  6. python ^ 与 - +是有运算的先后顺序的
  7. AR公共安全及应急指挥中的应用 | TVP思享
  8. 自动跑程序vbs脚本
  9. 计算机应用数学自考,计算机应用数学-补充题16年自考复习资料
  10. 十六进制和二进制相互转换(快速转换)
  11. 设计一个Triangle类继承自GeometricObject类
  12. 数分笔记整理22 - 数据处理项目 - 中国姓氏排行研究 房价影响因素挖掘
  13. winpe 能否修复服务器系统盘,U盘WINPE、光盘WINPE系统(启动修复盘)制作图文教程...
  14. 中小学计算机网络培训心得体会,计算机网络培训心得体会
  15. 有信仰与无信仰家族200年对比,让世人震惊!!
  16. oracle 加索引 %3e=,impdp create index parallel-数据泵并行创建索引
  17. python国际象棋ai程序_Python开发AI应用-国际象棋应用
  18. ROS2学习笔记13--编写一个简单的发布器和侦听器(C++)
  19. 标准化存贷款数据报送系统
  20. 我们都忽略了Html5的力量,如果只看成一种技术就大错特错了!

热门文章

  1. 机房租赁,如何鱼和熊掌兼得?
  2. ffmpeg推rtsp、rtmp音视频流命令
  3. linux sendmail
  4. 32x32Booth乘法器
  5. 自定义View之案列篇(一):魔方
  6. Spring 技术内幕读书笔记
  7. CPLD与FPGA的区别
  8. 基于锁相环的直流电机控制系统simulink仿真
  9. ADCLK905调试
  10. html在背景图里加白框,8款低脂少油的家常菜(附图)*