2015-01-05 6 views
1

Ubuntu 14.10 (Utopic Unicorn)에서 Eclipse Luna (4.4.1)를 실행 중이며 코드에서 특정 양식의 유효성을 검사하고 유틸리티 코드를 생성하는 주석 처리를 사용하는 프로젝트가 있습니다. 이클립스에서 코드가 생성되지 않습니다.Eclipse Luna가 주석 처리로 코드를 생성하지 않음

먼저 프로세서는 javac와 완벽하게 작동합니다. 두 번째 프로세서는 Eclipse에서 실행됩니다. 예외를 throw하도록 Eclipse를 변경하면 Eclipse에서이를보고합니다. 또한 프로세서에 잘못된 형식의 코드 (예 : 다른 유형의 getter/setter 쌍)를 제공하면 오류가 제대로보고됩니다 (빨간색 삐걱 거리는 소리, 적절한 오류 메시지, 전체 9 야드).

.apt_generated에 코드가 나타나지 않으며 클래스 파일도 생성되지 않습니다.

새로운 프로젝트를 시작한 후 새 프로젝트를 시작한 후 Eclipse를 새로 설치하고 프로젝트 버전을 1.7에서 1.8로 변경 한 다음 다시 시도하고 일괄 처리 모드가 아닌 일괄 처리 모드를 시도해 보았습니다. .apt_generated 디렉토리를 변경하고 .apt_generated에 대한 사용 권한을 두 번 확인했습니다. 아마 기억할 수없는 몇 가지 사항이 있습니다.

이 시점에서 나는 javac를 별도로 실행하고 이것이 도움이된다면 첫 번째 Apache Ant 또는 Maven 프로젝트를 만드는 것에 대해 생각하지만 차라리이 시점에서는별로하지 않을 것입니다.

누구나 Eclipse 내에서 코드 생성과 관련된 행운이 있습니까? 그 밖의 일이나 점검은 없습니까?

답변

1
  • https://www.eclipse.org/jdt/apt/introToAPT.php과 같이 프로젝트가 실제로 APT를 사용하도록 설정되어 있는지 확인하십시오. 그것들은 작업 환경 설정이 아닌 프로젝트 설정임을 유의하십시오.
  • 워크 플로의 다른 부분에서 잠재적으로 생성 된 코드가 이 아닌이 아닌지 확인하십시오. 예 : 제 1 프로세서가 생성 된 디렉토리를 클리닝하는 제 2 프로세서;
  • Eclipse를 실행하고 프로젝트를 빌드 할 때 JDT를 사용하고 JRE를 사용하지 않는지 확인하십시오.
  • org.eclipse.jdt.apt.core이 Eclipse 설치의 일부인지 확인하십시오. 이는 JDT의 실제 주석 프로세서 통합이므로 확인하십시오.
  • 프로세서에 올바르게 구현 된 파일 META-INF/services/javax.annotation.processing.Processor이 프로세서를 구현하는 올바른 클래스를 가리키는 지 확인하십시오. Eclipse는 그렇지 않으면 무시할 수 있습니다.

나는 이클립스에서 여러 가지 주석 처리기 (예 : 안드로이드 용 버터 나이프)를 사용해 왔지만 그러한 문제는 발생하지 않았습니다.

+0

내가 말했듯이 프로세서는 Eclipse에서 실행됩니다. 프로세서가 [Messager.printMessage()]를 사용하여 코드의 오류를 설정했기 때문에 확인되었습니다 (http://docs.oracle.com/javase/7/docs/api/javax/annotation/processing/Messager.html#printMessage). % 28javax.tools.Diagnostic.Kind, % 20java.lang.CharSequence, % 20javax.lang.model.element.Element % 29) – electroCutie

+0

오, 그리고 당신의 다른 관심사를 개선하기 위해 다른 프로세서가 내가 믿지 않는 디렉토리를 누클 렸습니다. 그것이 사실 일 것이다. 다른 프로세서는 실행 중이 아닐뿐만 아니라 javac에 의해 채워지는 디렉토리는 Eclipse에서 전체 재 빌드로도 정리되지 않습니다. 절대적인 증거는 아니지만 나는 그것이 상당히 결정적이라고 느낍니다. – electroCutie