当前位置: 首页 > 面试题库 >

Spring AOP使用Java 8提供IllegalArgumentException

施晗日
2023-03-14
问题内容

使用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字节码扫描。

您将要升级。



 类似资料:
  • 问题内容: 在使用树集时,我发现了非常奇怪的行为。 根据我的理解,以下程序应打印两条相同的行: 但奇怪的是它打印: 我无法理解-为什么树集的行为如此? 问题答案: 发生这种情况是因为SortedSet的Comparator用于排序,但是removeAll依赖于每个元素的方法。从SortedSet文档中: 请注意,如果排序集要正确实现接口,则排序集(无论是否提供显式比较器)所维护的顺序必须 与equ

  • 我想用 使用请求构造函数参数的异常类型。类似这样的事情: 有没有一种方法可以创建一个供应商来传递我的参数值?

  • 问题内容: 我正在尝试使用Echo提供多个文件,但并非每次都可以。api代码如下所示: 确切地说,它确实适用于最初的文件获取,但是随后对于任何后续调用(无论是文件获取还是更多的“经典”调用)都会失败。对于每个浏览器,错误消息都有所不同: 在Chrome中: 语法错误:无法在’XMLHttpRequest’上执行’setRequestHeader’:’Bearer {the_entire_conte

  • The Ethereum eco-system provides many methods of interacting with the blockchain. In ethers.js we expose a Provider API that covers the breadth of operations, however often it is useful to inter-opera

  • 主要内容:读者,前提条件,Spring AOP 概述Spring框架的关键组件之一是面向方面编程(AOP)框架。 面向方面的编程需要将程序逻辑分解成不同的部分。 此教程将通过简单实用的方法来学习Spring框架提供的AOP/面向方面编程。 读者 本教程主要是为Spring 面向方面编程(AOP)初学者准备的,帮助他们了解与Spring的AOP框架相关的基础到高级概念。 前提条件 在开始练习本教程系列文章中给出的各种类型的示例之前,我们假设您已经了解

  • 我是新手。我的应用程序是一个spring boot应用程序。消费者在协议代理中创建了协议。现在我正在尝试从providers端运行测试,我正在使用gradle插件来运行测试。我有几个问题: > 使用者发布 协议没有指定任何状态。这意味着我不需要在提供者端使用任何stateChangeUrl? 我想实现的是:当我说pactVerify 服务器启动,我的Spring Boot应用程序应该在localh