2012-09-04 6 views
12

Ich habe innerhalb aspectj den Ausdruck:AspectJ Ausdruck gibt formal ungebundene in pointcut Fehlern

@Pointcut("within(com.param.cpms.dao.impl.ProjectMetaDaoImpl)") 
public void daoExceptionHandle() { 

} 

Bei Frühling 3.0 Start, erhalte ich die folgenden Fehler :

nested exception is java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut 

Antwort

20

Wahrscheinlich liegt das Problem nicht in deinem Pointcut, sondern in einem Ratschlag mit diesem Pointcut und einem Parameter, der im Pointcut nicht existiert. Entfernen Sie einfach den Parameter aus dem Ratschlag (naja, oder fügen Sie ihn dem Pointcut hinzu).

+0

Wie Parameter hinzufügen? –

+0

Im Ernst: Sie können diese Frage nicht ohne Kontext stellen. Was möchten Sie mit dem Beratungsparameter machen? Was möchten Sie an die ungebundene Variable binden? Abhängig von der Antwort würden Sie 'this()', 'target()', 'args()', '@annotation()' oder etwas anderes verwenden. PS .: Ich bin kein Medium - vielleicht ein Mentalist, aber das ist ein anderes Thema. ;-) – kriegaex

4

Der Beitrag ist ziemlich alt, aber der Vollständigkeit halber füge ich einen anderen Grund hinzu, wenn Sie @Around Ratschlag verwenden.

Gemäß Spring AspectJ documentation muss das erste Argument des Advice ProceedingJoinPoint lauten. Wenn es fehlt, erhalten Sie genau diese Ausnahmebedingung. Leider weist die Ausnahme nicht auf einen irrtümlichen Ratschlag hin, so dass die Behebung des Fehlers ein Treffer ist.

2

Ich habe diesen Fehler wegen falschem Import der Klasse erhalten. Ich hätte die Klasse org.aspectj.lang.JoinPoint import importieren sollen, stattdessen aber eine andere Joinpoint-Klasse aus einem anderen Paket importiert.

1

Ich hatte auch dieses Problem, und in meinem Fall war es ein falscher Import aus: org.aopalliance.intercept.Joinpoint;

Es muss sein: org.aspectj.lang.JoinPoint;

Verwandte Themen