5

クラス A が .java ファイルで定義され、クラス B が .scala ファイルで定義されているとします。
クラスAはクラスBを使用し、クラスBはクラスA
を使用します。Javaコンパイラを使用すると、クラスBがまだコンパイルされていないため、コンパイルエラーが発生します。scala コンパイラを使用すると、クラス A が見つかりません。両方を一緒にコンパイルできるコンパイラはありますか?

4

2 に答える 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 に答える