2016-12-20 2 views
0

메소드를 사용하여 포인트 컷을 사용하는 하나의 항아리가 있습니다. 애스펙트는 여기에서 잘 작동하고 주변의 advice는 런타임에 메소드 주위에서 적절하게 실행됩니다. 나는이 병을 당황하게 한 다음 실행하면하지만 콘솔에서 오류가 아래에 나와 있습니다 :Spring - 난독 화 (YGuard) 바이너리 (병) 위에 Aspectj가 적용되지 않습니다.

[AppClassLoader @ dad5dc] 유형 'com.test.imp.aspect.AspectObf'(사용할 수없는 디버그 정보)에서 오류 : : 0 @Aspect에 대한 디버그 정보를 pointcuts에서 공식 바인딩을 처리 할 수 ​​없습니다 ('javac -g'또는 'Ant'로 컴파일하십시오)

도와주세요.

답변

1

글쎄, 오류 메시지는 모든 것을 말하고 심지어 문제를 해결하는 방법을 알려줍니다. 분명히 형식 매개 변수 바인딩을 사용합니다. args(), this(), target(), @annotation() 또는 이와 유사합니다. 그리고 obviosly AspectJ는 이것이 작동하기 위해서는 디버그 정보가 필요하다. 따라서 yGuard가 사용자 인터페이스에서 스트립 핑 디버그 정보를 제외하도록 구성해야하며, 심지어는 혼란스럽게하지 말고 스스로 시도해야합니다. 또 다른 옵션은 어노테이션 스타일 대신 네이티브 AspectJ 구문을 사용하는 것이다. 그렇다면 AspectJ 컴파일러는 런타임 동안보다는 컴파일 타임에 매개 변수 바인딩을 해결할 수 있지만 확실하지는 않습니다.