java.lang.ClassNotFoundException: org.aspectj.util.PartialOrder$PartialComparable

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/35537221/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-03 00:14:13  来源:igfitidea点击:

java.lang.ClassNotFoundException: org.aspectj.util.PartialOrder$PartialComparable

javaspringaspectjspring-aop

提问by Nikem

I am using Spring 4.2.4.RELEASE in my web application and I would like to remove the dependency on aspectjweaver.jar from it. I don't use AOP directly and I certainly don't use AspectJ. But my application fails with the following exception:

我在我的 web 应用程序中使用 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.access0(URLClassLoader.java:73)
at java.net.URLClassLoader.run(URLClassLoader.java:368)
at java.net.URLClassLoader.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)

Is the any way to completely remove the dependency on aspectjweaver.jar ?

有没有办法完全消除对 aspectjweaver.jar 的依赖?

回答by Adam C.

I encountered this problem when using the @Transactionalannotation on a class annotated with @Componentin Spring Boot similar to: https://spring.io/guides/gs/managing-transactions/

我在 Spring Boot 中使用@Transactional注解的类上使用注解时遇到了这个问题,@Component类似于:https: //spring.io/guides/gs/managing-transactions/

The easiest way to fix it is to add the proper Maven dependency:

修复它的最简单方法是添加适当的 Maven 依赖项:

<dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjweaver</artifactId>
  <version>1.8.9</version>
</dependency>

回答by VHS

Is there any way to completely remove the dependency on aspectjweaver.jar ?

有什么办法可以完全消除对 aspectjweaver.jar 的依赖?

No, you cannot. You are using Spring AOP. The Spring project spring-aopdoes have a hard dependency on aspectjweaver.jar. Read the Spring-aop docsthat clearly identifies it as a dependency.

你不能。您正在使用 Spring AOP。Spring 项目spring-aop确实对aspectjweaver.jar. 阅读明确将其标识为依赖项的 Spring-aop文档

回答by kriegaex

The answer is no. Spring AOP is syntactically an AspectJ subset, thus it uses AspectJ classes for parsing pointcuts. It also exposes AspectJ classes like JoinPoint, ProceedingJoinPointand AspectJ annotations like @Poinctut, @Before, @After, @Around, @DeclareParentsetc.

答案是不。Spring AOP 在语法上是一个 AspectJ 子集,因此它使用 AspectJ 类来解析切入点。它还公开的AspectJ类,如JoinPointProceedingJoinPoint和AspectJ注解喜欢@Poinctut@Before@After@Around@DeclareParents等。

回答by Raj kannan Iyyappan

Adding spring-boot-starter-aop dependency would resolve the issue, if you are facing it in the springboot application.

如果您在 springboot 应用程序中遇到它,添加 spring-boot-starter-aop 依赖项将解决该问题。

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
</dependency>