クラス A が .java ファイルで定義され、クラス B が .scala ファイルで定義されているとします。
クラスAはクラスBを使用し、クラスBはクラスA
を使用します。Javaコンパイラを使用すると、クラスBがまだコンパイルされていないため、コンパイルエラーが発生します。scala コンパイラを使用すると、クラス A が見つかりません。両方を一緒にコンパイルできるコンパイラはありますか?
2 に答える
18
Scala 2.7.2 では、まさにこれを行うために共同コンパイル モードが導入されたと思いますか?
使用しているのバージョンとscalac
、このモードを無効にして実行していますか?
編集: scalac によってクラス A が見つからないという場合は、ちょっと待ってください。javac
後で純粋な Java ファイルをコンパイルする必要があることに気付きましたか? Scalac の共同コンパイル モードは、実際*.class
には Java ファイルの出力を生成せず、署名に対して Scala クラスをコンパイルするだけです。javac
したがって、後で Java ファイルをコンパイルする必要がありますが、Scala クラスがコンパイルされているので、これは問題にはなりません。
于 2010-12-16T18:22:15.133 に答える
1
Javaで偽のクラスBを作成します。Aから参照されるメンバーのみがあることを宣言します。メソッドの本体は空にすることができます。A.javaとB.javaを一緒にコンパイルします。次に、B.classを破棄し、B.scalaをコンパイルします。
于 2012-06-05T14:37:01.117 に答える