2014-12-28 4 views
1

AspectJ 1.81에서 빌드 된 AJDT 2.2.4를 사용하고 있습니다. 그것은이다 LogMe 주석 전에 텍스트 인쇄AspectJ 및 Map <String, Object> Array

@Aspect 
public class SampleAspect { 
    @Before("@annotation(logMe)") 
    public void beforeAdvice(JoinPoint joinPoint, LogMe logMe) { 
     System.out.println("Before the method"); 
    } 
} 

:

이 간단한 측면을 고려

public class DummyClass { 
    @LogMe 
    public void doSomething() { 
     SampleUtil sampleUtil = new SampleUtil(); 
     //pass null for simplicity ! 
     sampleUtil.sampleMethod(null); 
     System.out.println("Do Something"); 
    } 
} 
: 이제

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.METHOD) 
public @interface LogMe {} 

를, 나는 같은 몇 가지 방법이 주석을 적용

SampleUtil은

입니다. 나는 오류가 갈 것 Map<String, Object> aMap 같은 다른 무언가로 sampleMethod 매개 변수를 변경하는 경우

can not resolve this member: 
void foo.SampleUtil.sampleMethod(java.util.Map[]) [Xlint:unresolvableMember] 

:

public class SampleUtil {  
    public void sampleMethod(
     Map<String, Object>[] mapArray){ 
    } 
} 

나는이 경고를 얻을.

왜이 경고 메시지가 표시됩니까?

+1

FYI : 'before'라는 조언 메서드의 이름을 지정할 수 없습니다. 이것은 AspectJ에서 예약 된 키워드입니다. Eclipse는 이상한 오류 메시지를 표시합니다. 질문을 편집하고 'beforeAdvice'로 이름을 바꿉니다. 또한 애스펙트 코드를 약간 단순화하여 문제를 재현 가능하게 유지할 것입니다. – kriegaex

답변

0

해당 경고는 inpath에서 foo.SampleUtil을 찾을 수 없음을 의미합니다. inpath는 classpath와 비슷하며, 어떤면이 직조되는지 결정하는 데 사용됩니다.

나는 foo.SampleUtil이 다른 프로젝트에있는 것으로 추측하고 있는데, 이는 inpath에 명시 적으로 프로젝트를 추가해야한다는 것을 의미합니다.

Eclipse 내부에서 AJDT를 사용 중이므로 aspect 프로젝트의 특성 페이지로 이동하여 AspectJ 빌드 경로 탭을 선택할 수있다. Inpath를 선택하고 다른 프로젝트를 추가하십시오.

+0

파일이 같은 프로젝트에 있습니다. AJDT는 어떤 로그 파일을 제공합니까? 아마도 여기를 검토하고 게시하여 도움을 줄 수 있습니다. 또한 ** java.util.Map [] **을 ** java.util.Map **으로 변경할 때 언급 한 것처럼 경고가 해결되었습니다. –

+0

실제로 컴파일러 버그처럼 보입니다. 코드가 예상대로 실행되는 것처럼 보이지만 경고가 울리고 있습니다. 당신은 당신의 양상을 코드 스타일 측면으로 변환 할 수 있습니까? ie- 주석을 제거하고'class' 대신에'aspect'를 사용하십시오. 일반적으로 코드 스타일 aspectj가 더 잘 작동합니다. 나 자신을 시도하고 더 이상 버그를 볼 수 없습니다. 또한 시간이 있다면, aspectj bugzilla에서 버그를 제기하는 것이 좋습니다 : http://bugs.eclipse.org. –

+2

참고로 문제를 재현하여 [버그 티켓] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=456357)을 만들었습니다. – kriegaex

관련 문제