복붙노트

[SPRING] java.lang.ClassNotFoundException : org.aspectj.util.PartialOrder $ PartialComparable

SPRING

java.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. ==============================

    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. ==============================

    2.아니 당신은 할 수 없습니다. Spring AOP를 사용하고 있습니다. Spring 프로젝트 spring-aop은 aspectjweaver.jar에 대한 의존성이 큽니다. Spring-aop 문서를 읽고 의존성으로 명확하게 식별하십시오.

    아니 당신은 할 수 없습니다. Spring AOP를 사용하고 있습니다. Spring 프로젝트 spring-aop은 aspectjweaver.jar에 대한 의존성이 큽니다. Spring-aop 문서를 읽고 의존성으로 명확하게 식별하십시오.

  3. ==============================

    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 등으로 노출합니다.

  4. from https://stackoverflow.com/questions/35537221/java-lang-classnotfoundexception-org-aspectj-util-partialorderpartialcomparabl by cc-by-sa and MIT license