AOP : java.lang.IllegalArgumentException: erreur ::0 ne trouvez pas référencé coupe transverse (pointcut)
Je suis nouveau à l'AOP. J'ai eu un problème de ce genre.
package org.suman.Aspect;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class LoginAspect {
//@Before("execution(public String getName())")
//@Before("execution(public String org.suman.Model.Triangle.getName())")
//@Before("execution(* get*())")
//@Before("execution(* get*(..))")
//@Before("execution(* org.suman.Model.*.get*())")
//@Before("execution(* get*())&& within(org.suman.Model.Circle)")
@Before("execution(* get*())&& allCircle()")
//@Before("allGetters() && allCircle()")
public void LoginAdvice()
{
System.out.println("Advice run.. getMethod is called");
}
@Before("execution(* get*())")
//@Before("allGetters()")
public void SecondAdvice()
{
System.out.println("this is a second Advice");
}
@Pointcut("execution(* get*())")
public void allGetters(){}
//@Pointcut("execution (* * org.suman.Model.Circle.*(..))")
@Pointcut("within(org.suman.Model.Circle)")
public void allCircle(){}
}
lors de l'utilisation de coupe transverse (pointcut), la méthode allGetters() pour LoginAdvice méthode, si j'utilise @Avant("exécution(* get*())") alors pas d'erreur, mais si j'utilise @Avant("allGetters()") puis donne le message d'erreur " java.lang.IllegalArgumentException: erreur ::0 ne trouvez pas référencé coupe transverse (pointcut) allGetters
si j'utilise @Avant("exécution(* get*())&& à l'intérieur(org.suman.De modèle.Cercle)") au lieu du nom de la méthode, il fonctionne.
Mon xml comme ceci:
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- <context:annotation-config /> -->
<aop:aspectj-autoproxy />
<bean name="triangle" class="org.suman.Model.Triangle">
<property name="name" value="Triangle Name"></property>
</bean>
<bean name="circle" class="org.suman.Model.Circle">
<property name="name" value="Circle name"></property>
</bean>
<bean name="shapeService" class="org.suman.Services.ShapeService"
autowire="byName"></bean>
<bean name="loginAspect" class="org.suman.Aspect.LoginAspect"></bean>
</beans>
Merci de résoudre le problème avec coupe transverse (pointcut) par lequel il prend la méthode
Pour ceux qui sont venus à ce fil, et aucune des solutions proposées sur cette page, essayez de prendre un coup d'oeil ici: stackoverflow.com/questions/21279716/...
OriginalL'auteur user1379705 | 2012-05-07
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème à l'aide de @coupe transverse (pointcut) sur un "espace réservé" la méthode a été de me donner l' "ne peut pas trouver référencé coupe transverse (pointcut)" erreur.
Résolu par une mise à jour de la AspectJ bibliothèques avec les dépendances maven à partir de ce:
à ce
Assez cool...insolite mais oui changer à la dernière qui a fonctionné pour moi...merci @Forge_7
je suis à l'aide de java8 , essayé avec aspectj 1.7.0 et 1.8.10 mais toujours confrontés à la question
OriginalL'auteur Forge_7
J'ai couru thjrough le même problème. Une fois que j'ai remplacer le aspectjweaver avec l'aspectjweaver-1.6.11.M2.jar version. Tout a commencé de fonctionner en douceur.
OriginalL'auteur Kiran
Le problème peut aussi être causé par l'exécution d'un accès anticipé à la version de JDK9.
Maven peut être préférant une version plus récente de Java au cours de la JVM dans
PATH
.Dans mon cas, je suis à court de Printemps avec Swagger2 via Maven sur Ubuntu 15.04, et j'ai installé
java-8-oracle
etjava-9-oracle
(et un peu plus de versions). Monjava -version
, dérivé dePATH
, dit1.8.0_72
, mais quand je lance Maven et le changement/usr/bin/mvn
àecho JAVA_HOME
, il indique avoir sélectionné/usr/lib/jvm/java-9-oracle
.L'exportation
JAVA_HOME
à/usr/lib/jvm/java-8-oracle
fait Maven utiliser la version souhaitée de Java, et qui a fait les problèmes avec AOP tissage de pointcuts pour le Printemps de l'injection de dépendance câblage en aller.OriginalL'auteur Christian Hujer
Utilisation aspectjweaver et aspectjrt versions 1.8.10
OriginalL'auteur Atul Gupta
Je crois que vous avez besoin de mettre un autre joker devant:
le modifier:
OriginalL'auteur El Guapo
Vous devez changer le aspectJWeaver la version 1.6.x
OriginalL'auteur Ahmed Azraq
J'ai eu ce problème parce que le projet a été compilé en Java 1.6, mais le serveur tomcat a commencé en Java 8.
OriginalL'auteur Feng Zhang
J'ai aussi eu la même problème avec @Avant les conseils de ne pas accepter @coupe transverse (pointcut) nom de la méthode, comme argument. J'ai eu ce problème en modifiant les dépendances version:
Sa fonctionne très bien pour moi maintenant.
OriginalL'auteur Anks
C'est le problème de dépendances. Suivant les pots ou les dépendances de la exactement la même version doit être utilisée pour éviter de tels problèmes:
OriginalL'auteur DHEERAJ KUMAR GUPTA
Changer le aspectjeaver version à la dernière et le déployer...
OriginalL'auteur lokesh