解决在JDK8中org.aspectj.apache.bcel.classfile.ClassFormatException Invalid byte tag in constant pool: 18

1 篇文章 0 订阅

异常1:Invalid byte tag in constant pool: 18

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.xxx.isbn.service.DigDataAndCountSubmitNumService com.xxx.isbn.quartz.DigDataAndCountSubmitNumJob.digDataAndCountSubmitNumService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'newDigDataAndCountSubmitNumServiceImpl' defined in file [E:\Neon-Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\ExerciseBookManager1\WEB-INF\classes\com\xxx\isbn\service\impl\NewDigDataAndCountSubmitNumServiceImpl.class]: Initialization of bean failed; nested exception is org.aspectj.apache.bcel.classfile.ClassFormatException: File: 'com.tongguanedu.isbn.service.impl.NewDigDataAndCountSubmitNumServiceImpl': Invalid byte tag in constant pool: 18
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:571)
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
	... 23 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'newDigDataAndCountSubmitNumServiceImpl' defined in file [E:\Neon-Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\ExerciseBookManager1\WEB-INF\classes\com\xxx\isbn\service\impl\NewDigDataAndCountSubmitNumServiceImpl.class]: Initialization of bean failed; nested exception is org.aspectj.apache.bcel.classfile.ClassFormatException: File: 'com.xxx.isbn.service.impl.NewDigDataAndCountSubmitNumServiceImpl': Invalid byte tag in constant pool: 18
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:543)
	... 25 more
Caused by: org.aspectj.apache.bcel.classfile.ClassFormatException: File: 'com.xxx.isbn.service.impl.NewDigDataAndCountSubmitNumServiceImpl': Invalid byte tag in constant pool: 18
	at org.aspectj.apache.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:192)
	at org.aspectj.apache.bcel.classfile.ClassParser.parse(ClassParser.java:131)
	at org.aspectj.apache.bcel.util.NonCachingClassLoaderRepository.loadJavaClass(NonCachingClassLoaderRepository.java:262)
	at org.aspectj.apache.bcel.util.NonCachingClassLoaderRepository.loadClass(NonCachingClassLoaderRepository.java:242)
	at org.aspectj.apache.bcel.util.NonCachingClassLoaderRepository.loadClass(NonCachingClassLoaderRepository.java:249)
	at org.aspectj.weaver.reflect.Java15AnnotationFinder.getAnnotations(Java15AnnotationFinder.java:202)
	at org.aspectj.weaver.reflect.ReflectionBasedResolvedMemberImpl.unpackAnnotations(ReflectionBasedResolvedMemberImpl.java:211)
	at org.aspectj.weaver.reflect.ReflectionBasedResolvedMemberImpl.hasAnnotation(ReflectionBasedResolvedMemberImpl.java:163)
	at org.aspectj.weaver.patterns.ExactAnnotationTypePattern.matches(ExactAnnotationTypePattern.java:109)
	at org.aspectj.weaver.patterns.ExactAnnotationTypePattern.matches(ExactAnnotationTypePattern.java:96)
	at org.aspectj.weaver.patterns.AnnotationPointcut.matchInternal(AnnotationPointcut.java:156)
	at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:137)
	at org.aspectj.weaver.internal.tools.PointcutExpressionImpl.getShadowMatch(PointcutExpressionImpl.java:239)
	at org.aspectj.weaver.internal.tools.PointcutExpressionImpl.matchesExecution(PointcutExpressionImpl.java:105)
	at org.aspectj.weaver.internal.tools.PointcutExpressionImpl.matchesMethodExecution(PointcutExpressionImpl.java:96)
	at org.springframework.aop.aspectj.AspectJExpressionPointcut.getShadowMatch(AspectJExpressionPointcut.java:416)
	at org.springframework.aop.aspectj.AspectJExpressionPointcut.matches(AspectJExpressionPointcut.java:271)
	at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:210)
	at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:248)
	at org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:280)
	at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findAdvisorsThatCanApply(AbstractAdvisorAutoProxyCreator.java:118)
	at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:88)
	at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:69)
	at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:330)
	at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:293)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:422)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
	... 34 more
报错如上 : Invalid byte tag in constant pool: 18

解决方案 : 

原因分析 : 

“Invalid byte tag in constant pool(说的是在反射这个Bean的时候遇到无效的字节)”。

那么我想我大概知道异常原因了,估计是因为我在这个类里面使用了JDK1.8的一些新的特性,而aspectj.weaver不支持这个特性导致Invalid byte tag in constant pool。

猜想异常代码若干:

1. 一个lambda表达式的排序

	Collections.sort(sortTimeList, (o1, o2) -> o2.compareTo(o1));

参考博客  http://blog.csdn.net/guoshengkai373/article/details/53404830

升级aspectjweaver, 升级为

<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
		<dependency>
		    <groupId>org.aspectj</groupId>
		    <artifactId>aspectjweaver</artifactId>
		    <version>1.8.10</version>
		</dependency>


解决问题 :Invalid byte tag in constant pool: 18

异常2:

Expected raw type form of org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry

Caused by: java.lang.IllegalStateException: Expected raw type form of org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry
	at org.aspectj.weaver.reflect.JavaLangTypeToResolvedTypeConverter.fromType(JavaLangTypeToResolvedTypeConverter.java:71) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.reflect.Java15GenericSignatureInformationProvider.getGenericReturnType(Java15GenericSignatureInformationProvider.java:61) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.reflect.ReflectionBasedResolvedMemberImpl.getGenericReturnType(ReflectionBasedResolvedMemberImpl.java:122) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.ResolvedMemberImpl.parameterizedWith(ResolvedMemberImpl.java:789) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.ResolvedMemberImpl.parameterizedWith(ResolvedMemberImpl.java:742) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.ReferenceType.getDeclaredMethods(ReferenceType.java:859) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.ResolvedType$MethodGetterIncludingItds.get(ResolvedType.java:252) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.ResolvedType$MethodGetterIncludingItds.get(ResolvedType.java:250) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.Iterators$4$1.hasNext(Iterators.java:213) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.Iterators$6.hasNext(Iterators.java:288) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.Iterators$4.hasNext(Iterators.java:230) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.ResolvedType.lookupResolvedMember(ResolvedType.java:619) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.JoinPointSignatureIterator.findSignaturesFromSupertypes(JoinPointSignatureIterator.java:192) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.JoinPointSignatureIterator.hasNext(JoinPointSignatureIterator.java:68) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.patterns.SignaturePattern.matches(SignaturePattern.java:317) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.patterns.KindedPointcut.matchInternal(KindedPointcut.java:197) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:137) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.internal.tools.PointcutExpressionImpl.getShadowMatch(PointcutExpressionImpl.java:319) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.internal.tools.PointcutExpressionImpl.matchesExecution(PointcutExpressionImpl.java:129) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.aspectj.weaver.internal.tools.PointcutExpressionImpl.matchesMethodExecution(PointcutExpressionImpl.java:110) ~[aspectjweaver-1.8.10.jar:1.8.10]
	at org.springframework.aop.aspectj.AspectJExpressionPointcut.getShadowMatch(AspectJExpressionPointcut.java:416) ~[spring-aop-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.aop.aspectj.AspectJExpressionPointcut.matches(AspectJExpressionPointcut.java:271) ~[spring-aop-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:210) ~[spring-aop-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:248) ~[spring-aop-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:280) ~[spring-aop-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findAdvisorsThatCanApply(AbstractAdvisorAutoProxyCreator.java:118) ~[spring-aop-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:88) ~[spring-aop-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:69) ~[spring-aop-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:330) ~[spring-aop-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:293) ~[spring-aop-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:422) ~[spring-beans-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583) ~[spring-beans-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) ~[spring-beans-4.2.2.RELEASE.jar:4.2.2.RELEASE]
	... 21 common frames omitted

异常分析 : spring-framework报错, 错误代码中存在  aspectjweaver-1.8.10.jar:1.8.10 报错信息, 猜想可能是1.8.10对spring 4.2.x不够兼容,上stackoverflow, 

见一篇blog,

Based on that I distilled Eduards testcode down to a minimal regression test. The question is, now that the diagnostic has served its purpose, should I sort it out and do a quick 1.8.11 including the necessary changes to avoid all those folks on older spring that might trip over it when using 1.8.10

建议使用低版本的spring的时候, 降低aspectjweaver版本, 降低为1.8.9.解决问题。

参考 : https://jira.spring.io/browse/SPR-15019

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值