将某个项目从spring boot1升级spring boot2之后出现如下报错,查了很多不同的解决方法都没有解决:
spring boot2项目启动时遇到了异常:
java.lang.arraystoreexception: sun.reflect.annotation.typenotprentexceptionproxy高考学习
caud by: java.lang.arraystoreexception: sun.reflect.annotation.typenotprentexceptionproxy at sun.reflect.annotation.annotationparr.parclassarray(annotationparr.java:724) ~[na:1.8.0_65] at sun.reflect.annotation.annotationparr.pararray(annotationparr.java:531) ~[na:1.8.0_65] at sun.reflect.annotation.annotationparr.parmembervalue(annotationparr.java:355) ~[na:1.8.0_65] at sun.reflect.annotation.annotationparr.parannotation2(annotationp描写海的词语arr.java:286) ~[na:1.8.0_65] at sun.reflect.annotation.annotationparr.parannotations2(annotationparr.java:120) ~[na:1.8.0_65] at sun.reflect.annotation.annotationparr.parannotations(annotationparr.java:72) ~[na:1.8.0_65] at java.lang.class.createannotationdata(class.java:3521) ~[na:1.8.0_65] at java.lang.class.annotationdata(class.java:3510) ~[na:1.8.0_65] at java.lang.class.createannotationdata(class.java:3526) ~[na:1.8.0_65]当然英文怎么说 at java.lang.class.annotationdata(class.java:3510) ~[na:1.8.0_65] at java.lang.class.getannotation(class.java:3415) ~[na:1.8.0_65] at java.lang.reflect.annotatedelement.isannotationprent(annotatedelement.java:258) ~[na:1.8.0_65] at java.lang.class.isannotationprent(class.java:3425) ~[na:1.8.0_65] at org.springframework.core.annotation.annotatedelementutils.hasannotation(annotatedelementutils.java:570) ~[spring-core-5.0.9.relea.jar:5.0.9.relea] at org.springframework.web.rvlet.mvc.method.annotation.requestmappinghandlermapping.ishandler(requestmappinghandlermapping.java:177) ~[spring-webmvc-5.0.9.relea.jar:5.0.9.relea] at org.springframework.web.rvlet.handler.abstracthandlermethodmapping.inithandlermethods(abstracthandlermethodmapping.java:218) ~[spring-webmvc-5.0.9.relea.jar:5.0.9.relea] at org.springframework.web.rvlet.handler.abstracthandlermethodmapping.afterpropertiest(abstracthandlermethodmapping.java:189) ~[spring-webmvc-5.0.9.relea.jar:5.0.9.relea] at org.springframework.web.rvlet.mvc.method.annotation.requestmappinghandlermapping.afterpropertiest(requestmappinghandlermapping.java:136) ~[spring-webmvc-5.0.9.relea.jar:5.0.9.relea] at org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.invokeinitmethods(abstractautowirecapablebeanfactory.java:1758) ~[spring-beans-5.0.9.relea.jar:5.0.9.relea] at org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory.java:1695) ~[spring-beans-5.0.9.relea.jar:5.0.9.relea] ... 16 common frames omitted
经过简单排查后,怀疑是因为jar版本冲突引起的异常,使用异常断点:
然后在
应该是从class org.activiti.spring.boot.curityautoconfiguration出错,然后报错java.lang.arraystoreexception: sun.reflect.annotation.typenotprentexceptionproxy
尝试复现异常:
curityautoconfiguration curityautoconfiguration=new curityautoconfiguration();
正常
curityautoconfiguration.class.getdeclaredannotation(aspect.class);
异常复现。
然后找到typenotprentexceptionproxy类,使用ctrl+n/ctrl+n+n
然后在构造方法中打断点,发现:
发现是cau:defaultauthenticationeventpublisher找不到引发的报错。
实际报错是classnotfound。
仔细看下代码,可以发现annotationparr.parclassvalue
把异常包装成为object。
private static object parclassvalue(bytebuffer buf, constantpool constpool, class<?> container) { int classindex = buf.getshort() & 0xffff; try { try { string sig = constpool.getutf8at(classindex); return parsig(sig, container); } catch (illegalargumentexception ex) { // support obsolete early jsr175 format class files return constpool.getclassat(classindex); } } catch (noclassdeffounderror e) { return new typenotprentexceptionproxy("[unknown]", e); } catch (typenotprentexception e) { return new typenotprentexceptionproxy(e.typename(), e.getcau()); } }
然后在sun.reflect.annotation.annotationparr.parclassarray(int, bytebuffer, constantpool, class<?>)
里尝试直接设置到数组里。
而这里数组越界了,arraystoreexception
只有越界的object
的类型信息,也就是上面的。
解决:
1:将springboot2.0降级为原来的1.x版本2:在springboot启动类上添加@springbootapplication(exclude = curityautoconfiguration.class)3:修改源码的集成问题,重新编译
总结:
具体问题还要具体分析,不同的代码引发该问题的原因也不相同。
我的问题是:
springboot2.0不能与activiti6.0.0直接集成使用,因为activiti6.0.0出来的时候springboot2.0还没有出来,activiti6.0.0四大悲剧 支持springboot1.2.6以上,2.0.0以下的版本。
这里实际报错是classnotfound。
到此这篇关于spring boot2深入分析解决java.lang.arraystoreexception异常的文章就介绍到这了。希望分布列对大家的学习有所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 05:29:51,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/d83f8c27c7baecedf41b0a050fed5062.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Spring Boot2深入分析解决java.lang.ArrayStoreException异常.doc
本文 PDF 下载地址:Spring Boot2深入分析解决java.lang.ArrayStoreException异常.pdf
留言与评论(共有 0 条评论) |