假设我在 .java 文件中定义了类 A,在 .scala 文件中定义了类 B。
A 类使用 B 类,B 类使用 A 类。
如果我使用 java 编译器,则会出现编译错误,因为 B 类尚未编译。如果我使用scala编译器A类将找不到。有没有可以同时编译两者的编译器?
我以为 Scala 2.7.2 引入了联合编译模式就是为了做到这一点?
您使用的是哪个版本的
scalac
?它是否在禁用此模式的情况下运行?
编辑:等一下,当你说 scalac 导致 A 类找不到时 - 你是否意识到你之后仍然需要用
javac
编译纯 Java 文件? Scalac 的联合编译模式实际上并不为 Java 文件生成 *.class
输出,只是根据 Scala 类的签名来编译它们。 因此,之后您仍然需要编译 Java 文件,不过既然 Scala 类已经编译好了,这对于 javac
来说应该不是问题。
用 Java 创建假的 B 类。只声明从 A 引用的成员。方法体可以为空。 将A.java和B.java一起编译。然后扔掉B.class并编译B.scala。