IntelliJ IDEA 2025.1 Help

排查常见的 Scala 问题

请查阅以下关于常见 Scala 和 sbt 问题的答案,这些答案可以帮助您解决在处理项目时可能遇到的编译器、性能或代码高亮问题。

为什么我的代码高亮显示不正确?

Scala 插件使用自己的类型检查器,并在您编写代码时实时执行类型推断。 类型检查针对编辑而非编译代码进行了优化。 其逻辑独立于 Scala 编译器,因此可以处理不完整的代码,不需要事先编译。 然而,这也意味着有时候 Scala 插件类型检查的结果与 Scala 编译器不一致——这是一个错误。

通常,这发生在代码复杂且您刚刚进行了重要修改时。 类型检查器可能需要时间来跟上,偶尔可能会失败。

  • 尝试更新 IntelliJ IDEA 和 Scala 插件。 您可能遇到了已报告并修复的问题。

  • 您还可以浏览我们在 我们的 YouTrack上开放和已解决票据的列表。 如果您找到描述与您的问题相似的票证,并且该问题已修复,但尚未在公共更新渠道发布,您可以考虑 切换到夜间更新渠道

  • 如果上述方法不起作用,首先,请为我们创建一个工单。

  • 如果 type-aware highlighting 高亮显示了正确的代码,而且这是一个很少发生的错误,请尝试在本地禁用此高亮。

    1. 将代码高亮显示并从主菜单中选择 代码 | 代码包围

    2. 请从列表中选择 / * _ * /.../ * _ * / 选项。

      环绕代码操作

      错误不再被高亮显示。

      包围代码操作结果
  • 如果大量代码被错误地高亮显示,请考虑启用 基于编译器的高亮显示。 请前往 设置 | 语言与框架 | Scala 并在 编辑器 选项卡上,将错误高亮更改为 编译器

    基于 Scala 编译器的高亮显示

为什么我在使用 Make Project 命令时会遇到断言错误?

将 Scala 版本更改为 2.12 及更高版本。 我们还建议您对值类中的私有方法使用唯一名称。

为什么我无法编译我的 Scala 项目?

在大多数情况下,您的项目 JDK 与 Scala 或 sbt 版本不兼容。 尝试更改 Scala Compile 服务器 SDK。

  1. Ctrl+Alt+S 打开设置,然后选择 构建、执行、部署 | 编译器 | Scala | Scala 编译器服务器

  2. JVM SDK 字段中指定合适的 SDK。

    Scala 编译器服务器

    我们建议您使用 Java 8 SDK,因为 Scala 版本 2.12 和 sbt 版本 1.10 及更高版本与旧的 Java SDK 版本不兼容。

如何在编译我的 Scala 项目时解决 OutOfMemory 异常?

为了解决 Scala 编译器 Out Of Memory 的问题,请在 JVM 最大堆内存大小 字段中增加堆大小,该字段位于 Scala 编译器服务器 的设置中 设置 | 语言与框架

Scala 服务器设置

如何将基于 IntelliJ IDEA 的 Scala 项目迁移到 sbt 项目?

您需要将 build.sbt 文件添加到您的项目中,在 build.sbt 中描述您的整个项目,然后重新导入该项目。

我们建议您从一开始就选择基于 sbt 的项目。 请参阅 Scala 入门

新 sbt 项目

IntelliJ IDEA 支持 sbt 集成测试模型吗?

当您构建 sbt 项目时,请记住 IntelliJ IDEA 项目模型并不完全具有与 sbt 相同的配置概念,因此仅 compile 和 test 得到了完全支持。 对于其他情况,我们建议您在 integrated sbt shell中运行构建。

如何解决我的 sbt 项目中的 OutOfMemory 异常?

当您的 sbt 进程内存不足时,请在 SBT 设置中增加最大堆大小(点击 ,该选项位于 sbt 项目 工具窗口中)。

sbt 设置

如何阻止 Scala 插件将我的 imports 标记为未使用并删除它们?

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

来看这个示例

未使用的导入类
未使用的 import——用法

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

将导入标记为未使用

导入将被添加到始终被认为使用的导入列表中。 您可以在 设置 | 编辑器 | 代码样式 | Scala | 导入 中修改列表。

您的导入可能会被标记为未使用并立即删除,从而阻止您使用快速修复。 这意味着您已启用 实时优化导入 模式。 前往 设置 | 编辑器 | 常规 | 自动导入 并将其关闭。

自动导入

如何在创建项目后更改 Scala 版本?

在大多数情况下,您项目的 Scala 版本将会在项目的构建脚本(例如,sbt)中指定,当您导入项目时,IntelliJ IDEA 将会识别到。 但可能会发生这种情况:您在 IntelliJ IDEA 中从头开始创建一个 Scala 项目,或者在项目创建后需要在构建脚本中更新 Scala 版本,而 IntelliJ IDEA 未注册更改。

请转到 文件 | 项目结构 并从左侧列表中选择 全局库。 在那里您可以下载并添加新的 Scala SDK,设置 Scala 版本,并从您的项目中删除旧的 SDK。

Scala 版本更新

IntelliJ Scala Discord 服务器

如果您无法在此页面或其他帮助页面上找到问题的答案,您可以考虑加入 IntelliJ Scala Discord 服务器并向开发人员提问。 请记住,首先浏览可能的解决方案,尝试它们,如果仍然找不到答案,请在您的问题中包含您尝试过的内容以及结果。

最后修改日期: 2025年 4月 24日