解决在IDEA中进行结巴分词产生Exception in thread “main“ ExceptionInInitializerError at ()错误
问题描述:
在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 ()错误相关推荐
- Exception in thread main java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static;只能在静态类型或顶级类型中才能声明静态方法
Exception in thread "main" java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static:只能在静态类型或顶级类型中才 ...
- Eclipse 报 “Exception in thread main java.lang.OutOfMemoryError: Java heap space ”错误的解决办法
Eclipse 报 "Exception in thread "main" java.lang.OutOfMemoryError: Java heap space &qu ...
- Eclipse 报 “Exception in thread main java.lang.OutOfMemoryError: Java heap space ”错误的解决办法...
Eclipse 报 "Exception in thread "main" java.lang.OutOfMemoryError: Java heap space &qu ...
- 解决:Exception in thread main java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExe
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.报错: Exception in thread "main" java.la ...
- Exception in thread main java.lang.NoClassDefFoundError解决了
Exception in thread "main" java.lang.NoClassDefFoundError 这个问题解决了!现总结如下 由于我是用JBuilder编写的 ...
- 解决: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 ...
- 已解决idea连接数据库异常:Exception in thread “main“ com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You ...
- 关于jar包运行报错:Exception in thread “main“ java.lang.UnsupportedClassVersionError的解决办法
打包jar包后 ,在jar路径下cmd使用命令 java -jar jar包名字 报错: Exception in thread "main" java.lang.Unsuppo ...
- 【已解决】Exception in thread “main“ java.lang.IllegalArgumentExcept: illegal initialSize 6, maxActive 5
Exception in thread "main" java.lang.IllegalArgumentException: illegal initialSize 6, maxA ...
最新文章
- 【每日一算法】使用二分法解决x 的平方根问题
- qps是什么意思_面试官:说说你之前负责的系统,QPS 能达到多少?
- (转)动态Entity Framework查询:Dynamic Query 介绍
- 顺网无盘服务器木马,无盘顺网虚拟服务器设置
- Python:for的多种写法
- python ^ 与 - +是有运算的先后顺序的
- AR公共安全及应急指挥中的应用 | TVP思享
- 自动跑程序vbs脚本
- 计算机应用数学自考,计算机应用数学-补充题16年自考复习资料
- 十六进制和二进制相互转换(快速转换)
- 设计一个Triangle类继承自GeometricObject类
- 数分笔记整理22 - 数据处理项目 - 中国姓氏排行研究 房价影响因素挖掘
- winpe 能否修复服务器系统盘,U盘WINPE、光盘WINPE系统(启动修复盘)制作图文教程...
- 中小学计算机网络培训心得体会,计算机网络培训心得体会
- 有信仰与无信仰家族200年对比,让世人震惊!!
- oracle 加索引 %3e=,impdp create index parallel-数据泵并行创建索引
- python国际象棋ai程序_Python开发AI应用-国际象棋应用
- ROS2学习笔记13--编写一个简单的发布器和侦听器(C++)
- 标准化存贷款数据报送系统
- 我们都忽略了Html5的力量,如果只看成一种技术就大错特错了!