在' scala'下嵌套类文件的原因是什么?目录?

时间:2017-10-03 09:54:11

标签: scala sbt

SBT将已编译的scala文件放在文件夹target / scala-< scalaVersion>中。

据我所知,类文件包含JVM字节码。他们与语言无关。

具有该语言名称的文件夹的原因是什么?我希望Scala和Java的类提交到同一目录。

2 个答案:

答案 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版本需要不同的目标目录以避免冲突。