最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot2深入分析解決java.lang.ArrayStoreException異常

 更新時(shí)間:2021年12月24日 15:44:40   作者:誰將新樽辭舊月,今月曾經(jīng)照古人  
這篇文章介紹了Spring Boot2深入分析解決java.lang.ArrayStoreException異常的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

將某個(gè)項(xiàng)目從Spring Boot1升級(jí)Spring Boot2之后出現(xiàn)如下報(bào)錯(cuò),查了很多不同的解決方法都沒有解決:

Spring boot2項(xiàng)目啟動(dòng)時(shí)遇到了異常:

java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
    at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:724) ~[na:1.8.0_65]
    at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531) ~[na:1.8.0_65]
    at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355) ~[na:1.8.0_65]
    at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286) ~[na:1.8.0_65]
    at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120) ~[na:1.8.0_65]
    at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.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.isAnnotationPresent(AnnotatedElement.java:258) ~[na:1.8.0_65]
    at java.lang.Class.isAnnotationPresent(Class.java:3425) ~[na:1.8.0_65]
    at org.springframework.core.annotation.AnnotatedElementUtils.hasAnnotation(AnnotatedElementUtils.java:570) ~[spring-core-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.isHandler(RequestMappingHandlerMapping.java:177) ~[spring-webmvc-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:218) ~[spring-webmvc-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:189) ~[spring-webmvc-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:136) ~[spring-webmvc-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1758) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1695) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]
    ... 16 common frames omitted

經(jīng)過簡(jiǎn)單排查后,懷疑是因?yàn)閖ar版本沖突引起的異常,使用異常斷點(diǎn):

然后在

應(yīng)該是從class org.activiti.spring.boot.SecurityAutoConfiguration出錯(cuò),然后報(bào)錯(cuò)java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

嘗試復(fù)現(xiàn)異常:

SecurityAutoConfiguration securityAutoConfiguration=new SecurityAutoConfiguration();

正常

SecurityAutoConfiguration.class.getDeclaredAnnotation(Aspect.class);

異常復(fù)現(xiàn)。

然后找到TypeNotPresentExceptionProxy類,使用Ctrl+N/Ctrl+N+N

然后在構(gòu)造方法中打斷點(diǎn),發(fā)現(xiàn):

發(fā)現(xiàn)是cause:DefaultAuthenticationEventPublisher找不到引發(fā)的報(bào)錯(cuò)。

實(shí)際報(bào)錯(cuò)是ClassNotFound。

仔細(xì)看下代碼,可以發(fā)現(xiàn)AnnotationParser.parseClassValue把異常包裝成為Object。

private static Object parseClassValue(ByteBuffer buf,
                                          ConstantPool constPool,
                                          Class<?> container) {
        int classIndex = buf.getShort() & 0xFFFF;
        try {
            try {
                String sig = constPool.getUTF8At(classIndex);
                return parseSig(sig, container);
            } catch (IllegalArgumentException ex) {
                // support obsolete early jsr175 format class files
                return constPool.getClassAt(classIndex);
            }
        } catch (NoClassDefFoundError e) {
            return new TypeNotPresentExceptionProxy("[unknown]", e);
        }
        catch (TypeNotPresentException e) {
            return new TypeNotPresentExceptionProxy(e.typeName(), e.getCause());
        }
    }

然后在sun.reflect.annotation.AnnotationParser.parseClassArray(int, ByteBuffer, ConstantPool, Class<?>)里嘗試直接設(shè)置到數(shù)組里。

而這里數(shù)組越界了,ArrayStoreException只有越界的Object的類型信息,也就是上面的。

解決:

  • 1:將springboot2.0降級(jí)為原來的1.X版本
  • 2:在springboot啟動(dòng)類上添加
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
  • 3:修改源碼的集成問題,重新編譯

總結(jié):

具體問題還要具體分析,不同的代碼引發(fā)該問題的原因也不相同。

我的問題是:

springboot2.0不能與activiti6.0.0直接集成使用,因?yàn)閍ctiviti6.0.0出來的時(shí)候springboot2.0還沒有出來,activiti6.0.0 支持springboot1.2.6以上,2.0.0以下的版本。

這里實(shí)際報(bào)錯(cuò)是ClassNotFound。

到此這篇關(guān)于Spring Boot2深入分析解決java.lang.ArrayStoreException異常的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

怀远县| 桑日县| 合山市| 湖北省| 阿勒泰市| 四平市| 兴安盟| 毕节市| 师宗县| 吉安市| 成安县| 清涧县| 舞钢市| 忻州市| 静安区| 永登县| 金堂县| 金坛市| 临夏市| 南漳县| 康定县| 星座| 土默特左旗| 合水县| 桦南县| 枣阳市| 巫山县| 许昌县| 巴塘县| 犍为县| 来宾市| 嘉定区| 垣曲县| 水城县| 老河口市| 石门县| 遂宁市| 镇雄县| 十堰市| 黄大仙区| 黑水县|