작성
·
194
0
안녕하세요 좋은 강의 잘 들었습니다.
최근 애노테이션 프로세서를 이용해서 실습하는데 저는 메서드에 애노테이션을 붙여서 사용하는 연습을 했습니다.
해당 클래스의 클래스명을 받아오기 위해 '((Symbol.MethodSymbol) element).owner.name.toString()'로 클래스 명을 가져오는 것을 호출하려고 하는데 IDE상에서는 아무런 문제가 없는데 maven install 할 때 `package com.sun.tools.javac.code does not exist` 에러가 떠서 계속 빌드가 안되네요.
아 참고로 java8을 사용 중이고 adoptopenJDK를 사용중입니다.
분명히 tools.jar에 있는 패키지이고 분명 포함돼있는데 왜 빌드가 안되는지 모르겠습니다.
혹시 어떻게 해결하면 좋을까요?
답변 3
0
0
public interface AnnotationTest {
@Annotation
int test(int value);
}
답변 감사합니다.
일단 클래스패스에 tools.jar를 추가했는데도 계속 이렇게 발생을 하네요.
그래서 maven runner로 사용되는 JRE의 버전을 11로 올렸더니 정상적으로 컴파일이 됩니다.
그리고 위와 같이 메서드에서 선언할 경우 저 메서드를 가지고 있는 클래스인 'AnnotationTest' 정보를 가져오기 위해서 저렇게 사용한 거였는데요. 혹시 다른 방법이 있을까요?
0
우선은 왜 저 패키지에 들어있는 클래스가 필요한지 모르겠네요. 만드신 클래스의 이름을 가져오는데 변수 타입을 잘못 선언하신거 아닌가요? JDK에 들어있는 tools.jar를 IDE에서는 참조하지만 메이븐을 실행할 때 사용하는 JRE에는 tools.jar가 없어서 그런 빌드 에러가 나는거 같은데 tools.jar를 클래스패스에 추가하면 해결되겠지만 그보다는 근본적으로 저 안에 있는 클래스를 왜 참조하는지, 정말 필요한건지 부터 살펴보시면 좋을거 같습니다.