2013-02-14 3 views
1

Java 소스 파일을 컴파일하는 동안 사용자 정의 클래스 읽기/해석 /로드 논리를 지정하기 위해 Eclipse 컴파일러에 연결하는 방법이 있습니까? 정확한 용어는 무엇인지 모르겠지만, 본질적으로 런타임에 발생하는 "클래스 로딩"에 해당하는 컴파일 타임에 해당합니다. 그것은가로 지정 -Eclipse에서 사용자 정의 컴파일시 클래스 로딩?

  • bar.Bar : 소스 파일 foo/Foo.java을 컴파일하는 동안

    package foo; 
    
    import bar.Bar; 
    
    public final class Foo { 
        // getQux() returns type: qux.Qux 
        private final Bar bar = baz.Baz.getQux().getBar(); 
    
        [...] 
    } 
    

    이 컴파일러는 3 개 클래스가 읽도록 요청해야합니다 : 예를 들어

    , 나는 자바 소스가 있다고 가정 해 수입.
  • baz.Baz - 정규화 된 형식 (... = baz.Baz.getQux()...)으로 사용됩니다.
  • qux.Qux - 이는 "간접적"종속성입니다 (baz.Baz.getQux()에 대한 호출에 의해 반환되며 이는 getBar() 메서드 호출을 통해 bar.Bar에 액세스하는 데 사용됩니다).

저는 이러한 "클래스 요청"을 가로 채어 문제의 클래스를 가져올 수 있도록 사용자 지정 논리를 제공 할 수 있기를 바랍니다 (아마도 데이터베이스에 있으며 아마도 일부 서버에서 사용했습니다. 어딘가 등).

또한 사용자가 명시 적으로 열 때까지 Eclipse 프로젝트에서 소스 파일을 컴파일하려고 시도하지 않았 으면 좋겠다. 따라서 위 예제에서 사용자가 실제로 소스 파일 foo/Foo.java을 열어야 만 3 클래스 요청 (bar.Bar, baz.Baz23, qux.Qux)이 작성되지 않습니다. 이상적으로 프로젝트의 소스 파일 목록은 파일 시스템의 실제 파일 일 필요는 없습니다 (아마도 너무 데이터베이스에 살고있는 등). 사용자가 소스 파일을 열거 나로드 할 때만 컴파일이 시도됩니다.

가능하다면, 여기에는 몇 가지 단점이 있습니다. 예를 들어 소스 파일 foo/Foo.java을 편집하여 "package private"클래스를 만들면 프로젝트의 "전체"컴파일이 완료 될 때까지 foo.Foo에 종속 된 클래스를 자동으로 중단합니다. 당분간, 그것은 내 목적을 위해서 좋다. (나중에 이것을 해결하기 위해 할 수있는 일이있다.)

아이디어가 있습니까?

감사합니다.

답변

0

아마도 JDT의 Java 빌드 경로 부분에 속할 것이고 나는 그 수준의 커스터마이즈가 없다고 생각할 것입니다. 이에 대한 문서화 된 확장 점이없는 것 같습니다. 결정적인 답을 얻으려면 출처를 살펴 봐야합니다. 아마도이 기능을 추가 할 수 있으며 이는 JDT의 다른 버전을 사용해야한다는 것을 의미합니다. 이는 어렵거나 불가능할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 많은 것으로 의심됩니다. ( – alopecoid

관련 문제