web-dev-qa-db-ja.com

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

WebアプリケーションでSpring4.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)

アスペクトjweaver.jarへの依存関係を完全に削除する方法はありますか?

9
Nikem

SpringBootで@Transactionalアノテーションが付けられたクラスで@Componentアノテーションを使用すると、次のような問題が発生しました。 https://spring.io/guides/gs/managing-transactions/

これを修正する最も簡単な方法は、適切なMaven依存関係を追加することです。

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

アスペクトjweaver.jarへの依存関係を完全に削除する方法はありますか?

いいえ、あなたがすることはできません。 SpringAOPを使用しています。 Springプロジェクトspring-aopaspectjweaver.jarに強く依存しています。 Spring-aop docs を読んで、依存関係として明確に識別します。

1
VHS

Springbootアプリケーションで問題が発生している場合は、spring-boot-starter-aop依存関係を追加すると問題が解決します。

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

答えはいいえだ。 Spring AOPは構文的にAspectJサブセットであるため、ポイントカットの解析にAspectJクラスを使用します。また、JoinPointProceedingJoinPointなどのAspectJクラスと、@Poinctut@Before@After@Around@DeclareParentsなどのAspectJアノテーションも公開します。

1
kriegaex