金华招聘网:必杀技:当报错信息看不出原因时,怎么办?

admin 1个月前 (04-20) 科技 8 0

今天遇到了一个错误,一样平常的错误提醒会很明显,一看就知道是什么问题。今天遇到的这个说实话真的不好找缘故原由,一样平常在这种情况下该怎么解决呢?

分享下我的思绪吧,纷歧定是最好的,至少有用。

直接上图吧,下面是报错信息:

为了利便查看,我把最主要的信息提取出来,如下:

org.springframework.beaNS.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [com/cxytiandi/kitty/web/confIG/WebApPConfigurer.class]: Invocation of init method failed; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

java.lang.ArrayStoreException这个确实平时很少遇到,看了下源码,这个是数组存储异常。好比下图中我框起来的部门就清晰的示意了在什么场景下会泛起这个异常。

也就是在存储的时刻类型纷歧致,然后就报错了呗!

第二个需要关注的错误信息是WebAppConfigurer.class,这个还算挺明确的,告诉我哪个类有问题,然后我看了下对应的代码,也就手动的映射了资源路径而已。

于是我就想,是不是这内里哪个类加载的时刻出问题了,我把WebAppConfigurer直接去掉了,然则并没什么用,后面照样报的相同的错误,只不过是提醒另一个类了,就是WebMvcAutoConfiguration。

[org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

以是说这些错误信息没能直接定位问题就是这个缘故原由,我们要关注的照样java.lang.ArrayStoreException这个异常,只要找到这个异常发生的地方就能解决了。

下面只能借助于IDEA壮大的调试功效了,增添一个Java Exception Breakpoints了。

然后debug模式重启,果不其然就报错的时刻就进断点了。

这下终于找到缘故原由了,parseClassValue的时刻出问题了,Class就是 org.springframework.cloud.sleuth.instrument.web.client.feign.TraceFeignClientAutoConfiguration。

这个类是我那时在Sleuth中扩展Sentinel对Feign支持的时刻做了一些修改,没想到居然出了Bug。

下面给人人说明下真正的缘故原由吧,在这个扩展模块中sentinel的依赖是可选的,如下:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-sentinel</artifactId>
    <optional>true</optional>
</dependency>

恰好报错的项目中不需要用到Sentinel,然则用到了Sleuth和Feign,以是TraceFeignClientAutoConfiguration生效了。主要照样Conditional都知足条件了。

项目中又没显示指定依赖Sentinel,这个类自然加载失败。

以是解决办法就是要么加Sentinel依赖,要么就是在@ConditionalOnClass中加上Sentinel的类,这样只有当在Sentinel的类在classpath中存在的时刻才会加载,若是项目没依赖Sentinel那么就不加载,这样就没问题了。

最后总结下吧,主要照样要找到真正问题发生在什么地方,有的时刻异常信息给出的并纷歧定是真正的地方,只是有关联而已。

当你封装的模块设置了optional=true的时刻,在对应的设置类加载生效也需要用@ConditionalOnClass来举行判断启用,否则就会泛起上面的问题。

,

皇冠体育APP

皇冠体育APP是一个开放皇冠代理APP下载、皇冠会员APP下载、皇冠线路APP下载、皇冠登录APP下载的平台,皇冠体育APP上最新登录线路、新2皇冠网址更新最快,皇冠体育APP开放皇冠会员注册、皇冠代理开户等业务。

皇冠体育声明:该文看法仅代表作者自己,与本平台无关。转载请注明:金华招聘网:必杀技:当报错信息看不出原因时,怎么办?

文章归档

    站点信息

    • 文章总数:294
    • 页面总数:0
    • 分类总数:8
    • 标签总数:686
    • 评论总数:0
    • 浏览总数:1364