2010-06-14 2 views
2

Eclipse 프로젝트에서 제 3 자 어노테이션 프로세서 인 Hibernate Metamodel Generator을 정확하게 사용하고 있습니다. 주석 처리기는 예상대로 작동하고 spec에 지정된대로 .java 파일을 생성합니다. 이 파일은 "gen"폴더 아래의 Eclipse 프로젝트 디렉토리에 생성됩니다. 두 개의 소스 폴더가 존재하기 때문에 프로젝트 속성에서 올바르게 반영됩니다 - "src"및 "gen" 그러나 프로젝트가 어떤 이유로 빌드 될 때 "gen"아래의 모든 [생성 된] 소스는 컴파일되지 않습니다 ("src"디렉토리의 .class 파일 만 볼 수있는 "bin"디렉토리 확인). 왜 이런 일이 일어나는 지 아는 사람이 있습니까?Eclipse에서 APT 생성 클래스를 컴파일하지 않는 이유는 무엇입니까?

답변

3

나는 그것을 얼마 전에 알아 냈고, 나는 돌아와서 무슨 일이 일어날지를 생각했다. 컴파일러가 실행되면 기존 소스 (필자가 작성한 소스)를 컴파일 한 다음 기존 소스 파일에서 소스 파일을 생성하지만 생성 된 클래스는 컴파일하지 않습니다. 나는 이것을 앤트 프로젝트 (설치마다 instructions에 따라)로 바꾸었다. 그래서 기본적으로 새로운 소스 파일을 생성하기 위해 (-proc:only 옵션을 사용하여 javac을 실행하면 소스를 컴파일하지 않고 주석 처리가 발생 함) 두 번째 작업은 모든 소스 (생성 및 기존)를 실제로 컴파일합니다.

+0

Eclipse 3.5에서 같은 문제가 있었는데 3.6으로 업그레이드하자. – junkdog

1

Eclipse에서 새로 생성 된 파일을보고 컴파일하려면 Eclipse의 "gen"폴더를 새로 고쳐야합니다 (예 : Package Explorer). 이러는거야?

+0

옙, 우선 시도해 보았습니다. 이상한 것은 일식입니다 (Red squiggly 라인 및 문제보기에서 메시지) 그들을 사용하려고 할 때 그 파일을 인식하지 못한다고하지만, 내가 그들을 사용하는 코드를 제거하고 자동 완성을 사용하려고하면 생성 된 클래스를 옵션으로 표시합니다. 나는 또한 프로젝트를 청소하고 다시 만들려고했다. 나는 그 java 파일이 잘못된 시간에 생성 된 것처럼 느낀다. 처음에는 src 아래의 모든 것이 bin으로 컴파일되고, .java 파일은 gen 아래 생성된다. 확실하지 않다면 내가 쉽게 확인할 수있다 – Andrey

관련 문제