[SPRING] java.lang.ClassNotFoundException : org.aspectj.util.PartialOrder $ PartialComparable
SPRINGjava.lang.ClassNotFoundException : org.aspectj.util.PartialOrder $ PartialComparable
내 웹 응용 프로그램에서 Spring 4.2.4.RELEASE를 사용하고 있는데 aspectjweaver.jar에 대한 종속성을 제거하려고합니다. 나는 AOP를 직접 사용하지 않고 AspectJ를 사용하지 않는다. 그러나 다음 예외가있는 경우 응용 프로그램이 실패합니다.
java.lang.ClassNotFoundException: org.aspectj.util.PartialOrder$PartialComparable
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:450)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:403)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at org.eclipse.jetty.webapp.WebAppClassLoader.findClass(WebAppClassLoader.java:510)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:441)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:403)
at org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator.sortAdvisors(AspectJAwareAdvisorAutoProxyCreator.java:73)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:91)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:69)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:346)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:298)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:422)
aspectjweaver.jar에 대한 종속성을 완전히 없애는 방법이 있습니까?
해결법
-
==============================
1.스프링 부트에서 @Component로 주석 처리 된 클래스에서 @Transactional 어노테이션을 사용할 때이 문제가 발생했습니다. https://spring.io/guides/gs/managing-transactions/
스프링 부트에서 @Component로 주석 처리 된 클래스에서 @Transactional 어노테이션을 사용할 때이 문제가 발생했습니다. https://spring.io/guides/gs/managing-transactions/
가장 쉬운 수정 방법은 적절한 Maven 종속성을 추가하는 것입니다.
<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.9</version> </dependency>
-
==============================
2.아니 당신은 할 수 없습니다. Spring AOP를 사용하고 있습니다. Spring 프로젝트 spring-aop은 aspectjweaver.jar에 대한 의존성이 큽니다. Spring-aop 문서를 읽고 의존성으로 명확하게 식별하십시오.
아니 당신은 할 수 없습니다. Spring AOP를 사용하고 있습니다. Spring 프로젝트 spring-aop은 aspectjweaver.jar에 대한 의존성이 큽니다. Spring-aop 문서를 읽고 의존성으로 명확하게 식별하십시오.
-
==============================
3.대답은 '아니오. Spring AOP는 구문 적으로 AspectJ 서브셋이므로, Pointcut을 파싱하기 위해 AspectJ 클래스를 사용한다. 또한 JoinPoint, ProceedingJoinPoint 및 AspectJ 주석과 같은 AspectJ 클래스를 @Poinctut, @Before, @After, @Around, @DeclareParents 등으로 노출합니다.
대답은 '아니오. Spring AOP는 구문 적으로 AspectJ 서브셋이므로, Pointcut을 파싱하기 위해 AspectJ 클래스를 사용한다. 또한 JoinPoint, ProceedingJoinPoint 및 AspectJ 주석과 같은 AspectJ 클래스를 @Poinctut, @Before, @After, @Around, @DeclareParents 등으로 노출합니다.
from https://stackoverflow.com/questions/35537221/java-lang-classnotfoundexception-org-aspectj-util-partialorderpartialcomparabl by cc-by-sa and MIT license