排查常见的 Scala 问题
请查阅以下关于常见 Scala 和 sbt 问题的答案,这些答案可以帮助您解决在处理项目时可能遇到的编译器、性能或代码高亮问题。
为什么我的代码高亮显示不正确?
Scala 插件使用自己的类型检查器,并在您编写代码时实时执行类型推断。 类型检查针对编辑而非编译代码进行了优化。 其逻辑独立于 Scala 编译器,因此可以处理不完整的代码,不需要事先编译。 然而,这也意味着有时候 Scala 插件类型检查的结果与 Scala 编译器不一致——这是一个错误。
通常,这发生在代码复杂且您刚刚进行了重要修改时。 类型检查器可能需要时间来跟上,偶尔可能会失败。
尝试更新 IntelliJ IDEA 和 Scala 插件。 您可能遇到了已报告并修复的问题。
您还可以浏览我们在 我们的 YouTrack上开放和已解决票据的列表。 如果您找到描述与您的问题相似的票证,并且该问题已修复,但尚未在公共更新渠道发布,您可以考虑 切换到夜间更新渠道。
如果上述方法不起作用,首先,请为我们创建一个工单。
如果 type-aware highlighting 高亮显示了正确的代码,而且这是一个很少发生的错误,请尝试在本地禁用此高亮。
将代码高亮显示并从主菜单中选择 。
请从列表中选择 / * _ * /.../ * _ * / 选项。

错误不再被高亮显示。

如果大量代码被错误地高亮显示,请考虑启用 基于编译器的高亮显示。 请前往 并在 编辑器 选项卡上,将错误高亮更改为 编译器。

为什么我在使用 Make Project 命令时会遇到断言错误?
将 Scala 版本更改为 2.12 及更高版本。 我们还建议您对值类中的私有方法使用唯一名称。
为什么我无法编译我的 Scala 项目?
在大多数情况下,您的项目 JDK 与 Scala 或 sbt 版本不兼容。 请尝试更改 Scala 编译服务器 SDK。
按 Ctrl+Alt+S 打开设置,然后选择 。
在 JVM SDK 字段中指定合适的 SDK。

我们建议您使用 Java 8 SDK,因为 Scala 版本 2.12 和 sbt 版本 1.10 及更高版本与旧的 Java SDK 版本不兼容。
如何在编译我的 Scala 项目时解决 OutOfMemory 异常?
为了解决 Scala 编译器 Out Of Memory 的问题,请在 JVM 最大堆内存大小 字段中增加堆大小,该字段位于 Scala 编译器服务器 的设置中 。

如何将基于 IntelliJ IDEA 的 Scala 项目迁移到 sbt 项目?
您需要将 build.sbt 文件添加到您的项目中,在 build.sbt 中描述您的整个项目,然后重新导入该项目。
我们建议您从一开始就选择基于 sbt 的项目。 请参阅 Scala 入门。

IntelliJ IDEA 支持 sbt 集成测试模型吗?
当您构建 sbt 项目时,请记住 IntelliJ IDEA 项目模型并不完全具有与 sbt 相同的配置概念,因此仅 compile 和 test 得到了完全支持。 对于其他情况,我们建议您在 integrated sbt shell中运行构建。
如何解决我的 sbt 项目中的 OutOfMemory 异常?
当您的 sbt 进程内存不足时,请在 sbt 设置中增加最大堆大小(点击 ,该选项位于 sbt 项目 工具窗口中)。

如何阻止 Scala 插件将我的 imports 标记为未使用并删除它们?
确定一个导入是否被使用是复杂且昂贵的,有时——例如,在某些从另一个包导入的隐式转换的情况下——Scala 插件可能会错误地标记您的导入为未使用。 然后,当您调用 优化导入 操作时,该导入将被删除。
请看这个示例:


请注意, import Mappers._ 在 HelloWorld 中标记为未使用。 您可以通过打开快速修复弹出菜单并选择 将导入标记为在此项目中始终使用 来让 IntelliJ IDEA 和 Scala 插件知道这个导入实际上是被使用的。

导入将被添加到始终被认为使用的导入列表中。 您可以在 中修改列表。
您的导入可能会被标记为未使用并立即删除,从而阻止您使用快速修复。 这意味着您已启用 动态优化 import 模式。 前往 并将其关闭。

如何在创建项目后更改 Scala 版本?
在大多数情况下,您项目的 Scala 版本将会在项目的构建脚本(例如,sbt)中指定,当您导入项目时,IntelliJ IDEA 将会识别到。 但可能会发生这种情况:您在 IntelliJ IDEA 中从头开始创建一个 Scala 项目,或者在项目创建后需要在构建脚本中更新 Scala 版本,而 IntelliJ IDEA 未注册更改。
请转到 并从左侧列表中选择 全局库。 在那里您可以下载并添加新的 Scala SDK,设置 Scala 版本,并从您的项目中删除旧的 SDK。

IntelliJ Scala Discord 服务器
如果您未在此页面或其他帮助页面中找到问题的答案,建议加入 IntelliJ Scala Discord 服务器 ,直接向开发团队提问。
在发布您的问题之前,请尝试搜索已有的解决方案并检查它们是否能解决您的问题。 如果您的问题仍然存在,请务必提供问题的清晰描述、您已经尝试过的方法以及遇到的结果或错误。