SBT将已编译的scala文件放在文件夹target / scala-< scalaVersion>中。
据我所知,类文件包含JVM字节码。他们与语言无关。
具有该语言名称的文件夹的原因是什么?我希望Scala和Java的类提交到同一目录。
答案 0 :(得分:4)
编译后的字节码与语言无关,但当然,该字节码内的代码可能会调用库,包括Scala标准库。编译器也可能已经生成了对Scala运行时的调用。
Scala运行时可能会在不同版本之间发生变化,例如,lambdas的表示方式在2.12中已完全更改。为Scala 2.12编译的程序不适用于Scala 2.11运行时。
因此,虽然JVM字节码与语言无关,但您仍需要匹配的运行时。
请注意,这与任何其他语言没有什么不同。如果将C编译为本机代码,除非您具有适当的C运行时,否则仍然无法运行代码。
答案 1 :(得分:3)
SBT支持building the same project with multiple Scala versions(然后为它们生成单独的工件等)。这些文件自然会在相对于目标目录的相同路径中(因为此路径由完整的类名决定)。因此,不同的Scala版本需要不同的目标目录以避免冲突。