解决常见 Scala 问题
最后修改时间:2023 年 8 月 24 日查看以下最常见 scala/sbt 问题的答案,这些答案可以帮助您解决在处理项目时可能遇到的编译器、性能或代码突出显示问题。
为什么我的代码突出显示不正确?
Scala 插件使用自己的类型检查器,并在您键入代码时实时执行自己的类型推断。类型检查针对编辑而不是编译代码进行了优化。它的逻辑独立于 Scala 编译器,因此它可以处理不完整的代码,并且不需要预先编译。然而,这也意味着有时 Scala 插件类型检查的结果与 Scala 编译器不同——这是一个错误。
通常,当代码很复杂并且您刚刚进行了重要修改时,就会发生这种情况。类型检查器可能需要时间来跟上,有时可能会失败。
尝试更新 IntelliJ IDEA 和 Scala 插件。您可能遇到已报告并已修复的问题。
您还可以在YouTrack上查看我们的开放和固定门票列表。如果您发现一个票证描述了与您的问题类似的问题,并且该问题已修复,但尚未在公共更新频道上发布,您可以考虑切换到夜间更新频道。
如果上述方法不起作用,那么首先请为我们创建一张票证。
如果类型感知突出显示突出显示了正确的代码,并且这是很少发生的错误,请尝试在本地禁用突出显示。
突出显示代码,然后从主菜单中选择代码 | 环绕着.
从列表中选择/ * _ * /.../ * _ * /选项。
该错误不再突出显示。
笔记
默认情况下,项目中启用类型感知突出显示。要禁用它,请按Ctrl+Alt+Shift+E。如果突出显示级别设置为None,则类型感知突出显示也将被禁用。使用相同的快捷方式启用突出显示。
如果很多代码突出显示不正确,请考虑启用基于编译器的突出显示。转到设置 | 语言和框架 | Scala并在Editor选项卡上将错误突出显示切换为Compiler。
笔记
然而,在此之前,请考虑一下可能存在的缺点。基于编译器的突出显示速度较慢,需要更多资源(类型检查进行两次,生成 .class 文件),突出显示的代码不附带快速修复建议,未针对即时编辑进行优化,并且需要完整编译项目,这意味着它可能不适用于不完整的代码。
为什么在使用 Make Project 命令时出现断言错误?
将 Scala 版本更改为 2.12 及更高版本。我们还建议您对值类中的私有方法使用唯一的名称。
为什么我无法编译我的 Scala 项目?
大多数情况下,您的项目 JDK 与 Scala 或 sbt 版本不兼容,请尝试更改 Scala Compile Server SDK。
按打开设置对话框。CtrlAlt0S
从左侧的选项中,选择“构建、执行、部署”| 编译器| Scala | Scala 编译器服务器。
在JVM SDK字段中指定适当的 SDK。
我们建议您切换到 Java 8 SDK,因为 Scala 版本 2.12 和 sbt 版本 1.10 及更高版本与旧版 Java SDK 不兼容。
编译 Scala 项目时如何解决 OutOfMemory 异常?
要修复Scala 编译器的问题,请增加Scala 编译器服务器设置的JVM 最大堆大小字段Out Of Memory
中的堆大小,该设置位于文件 | 设置 | 语言和框架。
如何将基于IDEA的Scala项目迁移到sbt项目?
您需要将build.sbt文件添加到您的项目中,在build.sbt中描述整个项目,然后重新导入该项目。
我们建议您从一开始就选择基于 sbt 的项目。
IntelliJ IDEA 是否支持 sbt 的集成测试模型?
当您构建 sbt 项目时,请记住,IDEA 项目模型实际上并不具有与 sbt 相同的配置概念,因此仅完全支持编译和测试。对于其他情况,我们建议您从集成的 sbt shell运行构建。
如何解决 sbt 项目中的 OutOfMemory 异常?
当您的 sbt 进程没有足够的内存时,请在sbt设置中增加最大堆大小(单击sbt 项目工具窗口中的)。
如何阻止 Scala 插件将我的导入标记为未使用并删除它们?
确定是否使用导入是复杂且昂贵的,有时 - 例如在从另一个包导入的隐式转换的某些情况下 - Scala 插件可能会错误地将您的导入标记为未使用。然后,当您调用“优化导入”操作时,该导入将被删除。
考虑这个例子:
请注意,import Mappers._
inHelloWorld
被标记为未使用。您可以通过打开快速修复弹出菜单并选择“将导入标记为始终在此项目中使用”,让 IntelliJ IDEA 和 Scala 插件知道实际使用了此导入。
该导入将添加到始终被视为使用的导入列表中。您可以在设置 |中修改列表。编辑| 代码风格 | Scala | 进口。
您的导入也可能被标记为未使用并立即删除,从而阻止您使用快速修复。这意味着您已启用动态优化导入模式。转到设置 | 编辑| 一般| 自动导入并将其关闭。
创建项目后如何更改scala版本?
在大多数情况下,项目的 Scala 版本将在项目的构建脚本(例如 SBT)中指定,并且当您导入项目时,IntelliJ IDEA 将选择它。但可能会发生这样的情况:您在 IntelliJ IDEA 中从头开始创建 Scala 项目,或者您需要在项目创建后在构建脚本中更新 Scala 版本,而 IntelliJ IDEA 不会注册更改。
转到文件| 项目结构,然后从左侧列表中选择Global Libraries。您可以在此处下载并添加新的 Scala SDK、设置 Scala 版本以及从项目中删除旧的 SDK。
感谢您的反馈意见!