当前位置: 首页 > 知识库问答 >
问题:

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

熊烨
2023-03-14

SBT将编译后的scala文件放在目标/scala文件夹中-

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

那么,文件夹使用语言名称的原因是什么?我希望Scala和Java的类字段都位于同一个目录中。

共有2个答案

松成和
2023-03-14

SBT支持使用多个Scala版本构建同一个项目(然后为它们生成单独的工件等)。这些文件相对于它们的目标目录自然会在同一个路径中(因为这个路径是由完整的类名决定的)。所以不同的Scala版本需要不同的目标目录来避免冲突。

叶鸿煊
2023-03-14

编译后的字节码与语言无关,但当然,字节码内的代码可能会调用库,包括Scala标准库。编译器可能还生成了对Scala运行时的调用。

Scala运行时可能在版本之间发生变化,例如,在2.12中,lambda的表示方式已经完全改变。为Scala 2.12编译的程序不能与Scala 2.11运行时一起工作。

因此,虽然JVM字节码与语言无关,但仍然需要匹配的运行时。

请注意,这与任何其他语言没有什么不同。如果您将C编译为本机代码,您仍然无法运行您的代码,除非您有适当的C运行时。

 类似资料:
  • 我目前使用eclipse进行Java开发。有人能解释为什么在使用像FileReader这样的类时文件被放在src目录下的原因吗?在使用getClass().getResourceAsStream(“...”)等方法时,有时必须将文件放在bin目录下为了读图像?方法getClass().getResourceAsstream(“...”)有其他方法吗需要src目录下的文件吗?

  • 给定以下示例代码: 编译器将给出以下错误: 所以一个gen[R,K]可以是gen[T,R]和gen[T,R1]的.follow()的参数。但Gen[R1,K]只能是Gen[T,R1]的.follow()的参数,如果应用于Gen[T,R2]或Gen[T,R],则会触发编译错误。不需要将GEN[R/R1,K]中的R或R1设置为逆变来完成它的工作。 我看不到一个可以通过编译而在运行时失败的案例。你觉得呢

  • 问题内容: 什么是静态嵌套类?静态和非静态嵌套类有什么区别? 问题答案: 静态内部类是嵌套在具有修饰符的另一个类中的类。除了可以访问在其内部定义的类的私有成员之外,它与顶级类几乎相同。 类是静态内部类。类是一个非静态的内部类。两者之间的区别是,非静态内部类的实例被永久连接到的实例-你不能创建一个没有。不过,您可以独立创建对象。 中的代码,并且都可以访问x; 不允许使用其他代码。

  • 我有两个嵌套的case类: 当然,解决方案应该是泛型的,并且适用于任何case类。 注意:这个讨论很好地回答了如何将单个case类映射到映射。但我无法将其用于嵌套的case类。相反,我得到了:

  • 问题内容: 我一直在尝试搜索包含嵌套字段的文档。我创建了这样的嵌套映射: 我的搜索如下所示: 但是我收到此错误消息: 编辑 我仍然收到此错误。我正在通过Java执行此操作,因此这是我要创建的文档: 像这样创建索引: 我认为我可能对文档编制了错误的索引。 问题答案: TLDR:输入您的嵌套类型。 假设我们有一个普通类型,并且嵌套了另一个类型: 该行是分配给的嵌套查询所必需的,如下所示: 该行似乎仅在

  • 问题内容: 当我尝试运行程序时,出现以下错误 请帮忙 问题答案: 从Javadoc: 如果Java虚拟机找不到声明为native的方法的适当本机语言定义,则抛出该异常。 这是与JNI相关的错误。loadJacobLibrary试图加载名为jacob-1.14.3-x86的本机库,但在java.library.path定义的路径上找不到该库。启动JVM时,应将此路径定义为系统属性。例如 在Windo