web-dev-qa-db-fra.com

Exception Java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Aspect

J'ai récemment commencé à travailler sur AspectJ et j'ai écrit un simple Aspect pour la journalisation.

J'ai défini ci-dessous des dépendances dans mon fichier pom:

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>1.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
        </dependency>

Et les artefacts suivants sont présents dans le dossier ear/lib:

  • aspectjrt-1.7.1.jar 
  • aspectjweaver-1.7.1.jar
  • spring-aspects-3.2.1.RELEASE.jar

Je reçois une exception ci-dessous au démarrage du service.:

05:59:18,325 ERROR [org.springframework.web.context.ContextLoader] (MSC service thread 1-15) Context initialization failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'calNamingBean' defined in ServletContext resource [/WEB-INF/helixservicebeans.xml]: BeanPostProcessor before instantiation of bean failed; nested exception is Java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Aspect
                    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.Java:452) [spring-beans-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.Java:294) [spring-beans-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.Java:225) [spring-beans-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.Java:291) [spring-beans-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.Java:197) [spring-beans-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.Java:740) [spring-context-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.Java:449) [spring-context-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.Java:385) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.Java:284) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.Java:111) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.Apache.catalina.core.StandardContext.contextListenerStart(StandardContext.Java:3392) [jbossweb-7.0.17.Final.jar:]
                    at org.Apache.catalina.core.StandardContext.start(StandardContext.Java:3850) [jbossweb-7.0.17.Final.jar:]
                    at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.Java:89) [jboss-as-web-7.1.3.Final.jar:7.1.3.Final]
                    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.Java:1811)
                    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.Java:1746)
                    at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1145) [rt.jar:1.7.0_45]
                    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:615) [rt.jar:1.7.0_45]
                    at Java.lang.Thread.run(Thread.Java:744) [rt.jar:1.7.0_45]
            Caused by: Java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Aspect
                    at org.springframework.aop.aspectj.annotation.AbstractAspectJAdvisorFactory.hasAspectAnnotation(AbstractAspectJAdvisorFactory.Java:119) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.springframework.aop.aspectj.annotation.AbstractAspectJAdvisorFactory.isAspect(AbstractAspectJAdvisorFactory.Java:115) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator.isInfrastructureClass(AnnotationAwareAspectJAutoProxyCreator.Java:100) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessBeforeInstantiation(AbstractAutoProxyCreator.Java:278) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE]
                    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInstantiation(AbstractAutowireCapableBeanFactory.Java:880) [spring-beans-3.1.1.RELEASE.jar:3.1.1.RELEASE]

Edit 1 - J'utilise JBOSS 7.1 et je pense qu'il y a quelques problèmes avec AspejctJ et JBOSS.

https://stackoverflow.com/questions/33164216/load-time-weaving-with-aspectj-in-jboss-as-7-1

13
Atul

Un NoClassDefFoundError comme ceci dans un projet maven provient généralement d'un conflit de bibliothèque. La question ne contient pas suffisamment d’informations, vous ne fournissez qu’un extrait de votre pom et n’indiquez pas la version des aspects du ressort que vous utilisez. Vous devez exécuter mvn dependency: tree et vérifier que vous utilisez des numéros de version cohérents pour toutes les dépendances aspectj.

Edit: Il existe certainement un conflit entre bibliothèques parce que vous avez mentionné les aspects de spring 3.2.1.RELEASE dans la question, mais le tracé de la pile contient de nombreuses références aux bibliothèques de spring 3.1.1.RELEASE.

11
hyness

Java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Aspect

Il semble que le fichier jar contenant la classe org.aspectj.lang.annotation.Aspect n'est pas chargé à partir de classpath à l'exécution, pouvez-vous essayer de supprimer la dépendance ci-dessous:

 <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-aspects</artifactId>
 </dependency>

et ajoutez ci-dessous dans votre classpath:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>3.2.1.RELEASE</version>
</dependency>
4
Arpit

Afin de vérifier que votre guerre a été emballée avec le pot approprié (aspectrj - qui contient vraiment cette classe -org.aspect.lang.annotation.Aspect).

Essayez (dans Eclipse) d’ajouter cette dépendance manuellement.

faites un clic droit sur le projet -> Assemblage de déploiement -> ajouter -> Archives du système de fichiers -> choisissez le fichier aspectjrt-1.7.1.jar (que vous pouvez trouver dans votre rapport .m2 local) la nouvelle guerre -> maintenant la guerre devrait inclure cette dépendance. Si le message d'erreur a disparu ->, cela indique qu'il y a eu un problème avec l'objectif d'emballage de guerre.

1
Hezi Schrager

Répondez à votre question

  1. Si vous utilisez Spring 3.2.1.RELEASE , veuillez modifier votre identifiant de groupe comme étant net.anthavio.maven. Je trouve que le fichier aspectjweaver.1.7.4.jar est présenté comme une dépendance. Veuillez modifier votre dépendance pour aspectjweaver en version 1.7.4.
  2. Il est toujours recommandé d'utiliser la nomenclature lorsque vous utilisez Spring 3.X et les versions ultérieures.
  3. J'ai donné un exemple de POM, vous pouvez valider en conséquence pour correspondre à votre POM existant.

                                        <project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                        xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
                                        <modelVersion>4.0.0</modelVersion>
                                        <groupId>com.yourcompany.app</groupId>
                                        <artifactId>springBOM</artifactId>
                                        <version>0.0.1-SNAPSHOT</version>
    
                                        <dependencyManagement>
                                            <dependencies>
                                                <dependency>
                                                    <groupId>org.springframework</groupId>
                                                    <artifactId>spring-framework-bom</artifactId>
                                                    <version>3.2.10.RELEASE</version>
                                                    <type>pom</type>
                                                    <scope>import</scope>
                                                </dependency>
                                            </dependencies>
                                        </dependencyManagement>
                                        <dependencies>
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-aop</artifactId>
                                        </dependency>
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-aspects</artifactId>
                                        </dependency>
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-beans</artifactId>
                                         </dependency>
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-context</artifactId>
                                        </dependency>
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-context-support</artifactId>
                                        </dependency>
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-core</artifactId>
                                        </dependency>
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-expression</artifactId>
                                        </dependency>
    
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-jdbc</artifactId>
                                        </dependency>
    
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-orm</artifactId>
                                        </dependency>
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-oxm</artifactId>
                                        </dependency>
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-test</artifactId>
                                        </dependency>
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-tx</artifactId>
                                        </dependency>
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-web</artifactId>
                                        </dependency>
                                        <dependency>
                                            <groupId>org.springframework</groupId>
                                            <artifactId>spring-webmvc</artifactId>
                                        </dependency>
                                       </dependencies>
                                        <build>
                                            <finalName>springBOM</finalName>
                                            <plugins>
                                          <plugin>
                                            <groupId>org.Apache.maven.plugins</groupId>
                                            <artifactId>maven-compiler-plugin</artifactId>
                                            <version>3.5.1</version>
                                            <configuration>
                                              <source>1.7</source>
                                              <target>1.7</target>
                                            </configuration>
                                          </plugin>
                                        </plugins>
                                        </build>
                                      </project>
    
  4. Il est recommandé de choisir la version Spring-3.2.10.RELEASE car une version standard à est publiée au plus tard à la version mentionnée dans votre question. Cela s'applique à ce contexte spécifique uniquement. Sinon, je recommanderais de mettre à niveau vos fichiers JAR vers la version Spring 4.X.

1
Praveen Kumar K S