将类文件嵌套在';scala';目录
SBT将编译的scala文件放在target/scala-文件夹中 据我所知,类文件包含JVM字节码。他们是语言不可知论者将类文件嵌套在';scala';目录,scala,sbt,Scala,Sbt,SBT将编译的scala文件放在target/scala-文件夹中 据我所知,类文件包含JVM字节码。他们是语言不可知论者 那么,使用语言名称创建文件夹的原因是什么?我希望Scala和Java的类字段都位于同一个目录。编译的字节码与语言无关,但当然,字节码中的代码可能调用库,包括Scala标准库。编译器可能还生成了对Scala运行时的调用 Scala运行时可能在不同版本之间发生变化,例如,lambda的表示方式在2.12中已经完全改变。为Scala 2.12编译的程序不能与Scala 2.11运
那么,使用语言名称创建文件夹的原因是什么?我希望Scala和Java的类字段都位于同一个目录。编译的字节码与语言无关,但当然,字节码中的代码可能调用库,包括Scala标准库。编译器可能还生成了对Scala运行时的调用 Scala运行时可能在不同版本之间发生变化,例如,lambda的表示方式在2.12中已经完全改变。为Scala 2.12编译的程序不能与Scala 2.11运行时一起使用 因此,尽管JVM字节码与语言无关,但仍然需要匹配的运行时
请注意,这与任何其他语言都没有区别。如果您将C编译为本机代码,您仍然无法运行代码,除非您有适当的C运行时。SBT支持(然后为它们生成单独的工件,等等)。这些文件相对于其目标目录自然位于同一路径中(因为此路径由完整类名确定)。因此,不同的Scala版本需要不同的目标目录以避免冲突。因此,在本例中,Scala指定的不是语言,而是相应的运行时……许多在其他语言中属于该语言的功能都是Scala库的一部分,因此边界模糊。通常,如果没有某种形式的运行时支持库,几乎没有任何语言实现可以工作。例如,如果没有垃圾收集器、动态链接器和JRE,就无法使用Java。我感到困惑的是,我认为Scala的版本是Major.Minor.Revision,但实际上它是Epoch.Major.Minor。