[SPRING] Java 8에서 Spring AOP가 IllegalArgumentException을 발생시킵니다.
SPRINGJava 8에서 Spring AOP가 IllegalArgumentException을 발생시킵니다.
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)
그러나 자바 소스 및 대상을 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>
해결법
-
==============================
1.Jetty 9.2.0은 JDK8에 대한 주석 및 클래스 스캐닝을 지원하는 Jetty의 첫 번째 버전입니다.
Jetty 9.2.0은 JDK8에 대한 주석 및 클래스 스캐닝을 지원하는 Jetty의 첫 번째 버전입니다.
우리가 사용하는 asm 라이브러리에 대한 업데이트가 있었고, 새로운 JDK8 바이트 코드 스캐닝을 지원하는 몇 가지 API 변경 사항이있었습니다.
업그레이드를 원할 것입니다.
-
==============================
2.asm 5. *로 업그레이드하면 작동하지 않으므로 모든 asm jar 파일도 jetty에서 제외하십시오. 이 구성은 저에게 효과적이었습니다.
asm 5. *로 업그레이드하면 작동하지 않으므로 모든 asm jar 파일도 jetty에서 제외하십시오. 이 구성은 저에게 효과적이었습니다.
<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 웹 프로젝트 (이클립스 플러그인, JAVA 8)와 비슷한 문제가 있었다.
나는 GWT 2.8 웹 프로젝트 (이클립스 플러그인, JAVA 8)와 비슷한 문제가 있었다.
내 간단한 해결책은 새로운 Eclipse 작업 공간에서 GWT 웹 프로젝트를 작성하는 것이었다.
from https://stackoverflow.com/questions/26305416/spring-aop-gives-illegalargumentexception-with-java-8 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 메이븐 (Maven)은 프록시 뒤에서 항아리를 다운로드하지 않습니다. (0) | 2019.05.16 |
---|---|
[SPRING] Spring 루트 컨텍스트 경로를 설정하는 방법 (0) | 2019.05.16 |
[SPRING] Spring 5의 Reactive Programming을 사용하여 웹 스레드의 최대 수를 실제로 "관리"하는 방법은 무엇입니까? (0) | 2019.05.16 |
[SPRING] WebClient로 초당 요청 수를 제한하는 방법은 무엇입니까? (0) | 2019.05.16 |
[SPRING] Spring JMS (ActiveMQ)가 메시지 배달을 지연 시켰습니다. (0) | 2019.05.16 |