使用Java 8和Spring AOP 4.0.6时,出现以下错误
java.lang.RuntimeException: Error scanning file MonitorAroundPerformance.class at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:705) at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686) at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686) at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686) at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686) at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686) at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:821) at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:159) at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:531) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalArgumentException at org.objectweb.asm.ClassReader.<init>(Unknown Source) at org.objectweb.asm.ClassReader.<init>(Unknown Source) at org.objectweb.asm.ClassReader.<init>(Unknown Source) at org.eclipse.jetty.annotations.AnnotationParser.scanClass(AnnotationParser.java:970) at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:700) at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686) at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686) at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686) at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686) at org.eclipse.jetty.annotations.AnnotationParser.parseDir(AnnotationParser.java:686) at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:821) at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:159) at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:531) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536) at java.lang.Thread.run(Thread.java:745)
但是,当我将Java Source和target更改为1.7时,此错误消失了。POM.xml设置-
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-framework-bom</artifactId> <version>4.0.6.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Eclipse Kepler中构建路径中的jar-spring- aop-4.0.6,aspectjrt-1.8.2.jar,aopalliance-1.0.jar,jetty-maven- plugin:9.1.1.v20140108
配置:
<bean id="performanceAdvice" class="com.util.MonitorAroundPerformance" /> <bean id="performanceAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor" depends-on="propertyOverrideConfigurer"> <property name="advice" ref="performanceAdvice" /> </bean> <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"> <property name="proxyTargetClass" value="true" /> </bean>
Jetty 9.2.0是第一个支持JDK8注释和类扫描的Jetty版本。
我们使用的asm库进行了更新,并对API进行了一些更改,以支持新的JDK8字节码扫描。
您将要升级。