java - Spring AOP 为 Java 8 提供 IllegalArgumentException

标签 java spring jetty spring-aop

使用 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 构建路径中的 Jars - 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 is the first version of Jetty to support annotation and class scanning for JDK8 .

我们使用的 asm 库进行了更新,并更改了一些 api 以支持新的 JDK8 字节码扫描。

你会想要升级。

关于java - Spring AOP 为 Java 8 提供 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26305416/

相关文章:

jetty - 下载 Jetty 6 的分发

Java Bukkit 插件 "Cannot be resolved to a variable"

java - Android 如何获取手机是否从 sleep 模式恢复

java - 如何在 Spring 将其反序列化为 POJO 之前访问原始请求负载?

java - 为什么spring/hibernate只读数据库事务运行比读写慢?

java - 在没有 Jetty 的情况下运行 GWT Speedtracer

spring - 如何将 Jetty 嵌入 Spring 并使其使用嵌入的相同 AppContext?

java - SQLite 查询 - 出现多次并按出现次数排序的单个记录的简短列表?

java - 使用 Hibernate 定义两种数据源 - 一种是关系型数据源,一种是 NoSQL 数据源

java - 如何在 Java 中通过反射调用代理(Spring AOP)上的方法?