2010-12-16 2 views
4

클래스 A가 .java 파일에 정의되어 있고 클래스 B가 .scala 파일에 정의되어 있다고 가정 해 보겠습니다.
class A 클래스 B를 사용하고 클래스 B는 클래스 A를 사용합니다.
Java 컴파일러를 사용하는 경우 클래스 B가 아직 컴파일되지 않았기 때문에 컴파일 오류가 발생합니다. 스칼라 컴파일러 클래스를 사용하면 클래스 A가 발견되지 않습니다. 컴파일 할 수있는 컴파일러가 있습니까?.java와 .scala 클래스 사이에 순환 종속성을 가질 수 있습니까?

답변

18

스칼라 2.7.2가 정확히 이것을 수행하기 위해 joint compilation mode을 도입했다고 생각 했습니까?

어떤 버전의 scalac을 사용하고 있습니까?이 모드는 비활성화되어 실행 중입니까?

편집 : 잠깐, 클래스 A에 대한 스칼라 리드가 발견되지 않을 때까지 기다리십시오. 나중에 순수 자바 파일을 javac으로 컴파일해야한다는 것을 알고 계셨습니까? Scalac의 공동 컴파일 모드는 실제로 Java 파일에 대해 *.class 출력을 생성하지 않으며 스칼라 클래스를 해당 서명과 비교하여 컴파일하기 만합니다. 따라서 나중에 스칼라 클래스가 컴파일되었으므로 javac에서 문제가되지 않아도 나중에 Java 파일을 컴파일해야합니다.

+0

감사합니다. 정확히 알고 싶습니다. 제가 강의를 들었을 때의 이론적 인 질문 일뿐입니다. – oshai

1

Java에서 가짜 클래스 B를 만듭니다. A에서 참조 된 멤버 만 선언하십시오. 메서드의 본문은 비어있을 수 있습니다. A.java와 B.java를 함께 컴파일하십시오. 그런 다음 B.class를 버리고 B.scala를 컴파일하십시오.

관련 문제