【问题标题】:Spring AOP gives IllegalArgumentException with Java 8Spring AOP 在 Java 8 中提供 IllegalArgumentException
【发布时间】:2014-12-05 23:27:09
【问题描述】:

使用 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 中构建路径中的罐子 - 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>

【问题讨论】:

    标签: java spring jetty spring-aop


    【解决方案1】:

    Jetty 9.2.0 is the first version of Jetty to support annotation and class scanning for JDK8.

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

    你会想要升级。

    【讨论】:

      【解决方案2】:

      如果只是升级到 asm 5.* 对您不起作用,请从 jetty 中排除所有 asm jar。 此配置对我有用:

              <plugin>
                  <groupId>org.eclipse.jetty</groupId>
                  <artifactId>jetty-maven-plugin</artifactId>
                  <version>9.4.6.v20170531</version>
                  <configuration>
                      <webApp>
                          <webInfIncludeJarPattern>.*/^(asm-all-repackaged)[^/]*\.jar$</webInfIncludeJarPattern>
                      </webApp>
                  </configuration>
                  <dependencies>
                      <dependency>
                          <groupId>org.ow2.asm</groupId>
                          <artifactId>asm</artifactId>
                          <version>5.2</version>
                      </dependency>
                      <dependency>
                          <groupId>org.ow2.asm</groupId>
                          <artifactId>asm-commons</artifactId>
                          <version>5.2</version>
                      </dependency>
                  </dependencies>
              </plugin>
      

      【讨论】:

        【解决方案3】:

        我在 GWT 2.8 Web 项目(eclipse 插件,JAVA 8)中遇到了类似的问题。

        我的简单解决方案是在新的 Eclipse 工作区中创建 GWT Web 项目。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-04
          • 2014-01-06
          相关资源
          最近更新 更多