2012-09-04 28 views
12

Tôi có trong AspectJ biểu thức:biểu AspectJ cho chính thức cởi ra do lỗi pointcut

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

} 

Tại mùa xuân 3,0 khởi động, tôi nhận được lỗi sau :

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

Trả lời

20

Có lẽ vấn đề không nằm trong quan điểm của bạn, nhưng trong một lời khuyên sử dụng con trỏ đó và sử dụng một tham số không tồn tại trong con trỏ. Chỉ cần loại bỏ các tham số từ lời khuyên (tốt, hoặc thêm nó vào các pointcut).

+0

Làm thế nào để thêm các thông số? –

+0

Nghiêm túc: Bạn không thể hỏi câu hỏi này mà không cung cấp bất kỳ ngữ cảnh nào. Bạn muốn làm gì với tham số lời khuyên? Bạn muốn liên kết gì với biến không liên kết ?. Tùy thuộc vào câu trả lời bạn sẽ sử dụng 'this()', 'target()', 'args()', '@annotation()' hoặc một cái gì đó khác. Tái bút: Tôi không phải là một người trung gian - một nhà tâm linh có thể, nhưng đó là một chủ đề khác. ;-) – kriegaex

4

Bài đăng khá cũ, nhưng vì mục đích hoàn chỉnh, tôi đang thêm một lý do khác, nếu bạn sử dụng lời khuyên @Around.

Theo Spring AspectJ documentation đối số đầu tiên của lời khuyên phải là ProceedingJoinPoint. Nếu nó bị thiếu, bạn sẽ nhận được chính xác thông báo ngoại lệ này. Đáng buồn thay, ngoại lệ không chỉ đến lời khuyên trong lỗi để giải quyết lỗi là một hit-and-miss.

2

Tôi gặp lỗi này do nhập sai lớp. Tôi nên nhập khẩu lớp org.aspectj.lang.JoinPoint nhập khẩu, nhưng thay vì nhập một số lớp Joinpoint khác từ một gói khác.

1

Tôi cũng có vấn đề này, và trong trường hợp của tôi đó là một nhập sai từ: org.aopalliance.intercept.Joinpoint;

Nó cần phải được: org.aspectj.lang.JoinPoint;

Các vấn đề liên quan