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
java.lang.ClassNotFoundException: org.aspectj.util.PartialOrder$PartialComparable
提问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 @Transactional
annotation on a class annotated with @Component
in 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-aop
does 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
, ProceedingJoinPoint
and AspectJ annotations like @Poinctut
, @Before
, @After
, @Around
, @DeclareParents
etc.
答案是不。Spring AOP 在语法上是一个 AspectJ 子集,因此它使用 AspectJ 类来解析切入点。它还公开的AspectJ类,如JoinPoint
,ProceedingJoinPoint
和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>