Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将类文件嵌套在';scala';目录_Scala_Sbt - Fatal编程技术网

将类文件嵌套在';scala';目录

将类文件嵌套在';scala';目录,scala,sbt,Scala,Sbt,SBT将编译的scala文件放在target/scala-文件夹中 据我所知,类文件包含JVM字节码。他们是语言不可知论者 那么,使用语言名称创建文件夹的原因是什么?我希望Scala和Java的类字段都位于同一个目录。编译的字节码与语言无关,但当然,字节码中的代码可能调用库,包括Scala标准库。编译器可能还生成了对Scala运行时的调用 Scala运行时可能在不同版本之间发生变化,例如,lambda的表示方式在2.12中已经完全改变。为Scala 2.12编译的程序不能与Scala 2.11运

SBT将编译的scala文件放在target/scala-文件夹中

据我所知,类文件包含JVM字节码。他们是语言不可知论者


那么,使用语言名称创建文件夹的原因是什么?我希望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。