# 排查常见的 Scala 问题

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com/zh-cn/help/idea/llms.txt).

> **TL;DR**
> 必需插件：   Scala  ： [安装方法](get-started-with-scala.html#scala_plugin)

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

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

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

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

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

* 您还可以浏览我们在 [我们的 YouTrack](https://youtrack.jetbrains.com/issues/SCL)上开放和已解决票据的列表。 如果您找到描述与您的问题相似的票证，并且该问题已修复，但尚未在公共更新渠道发布，您可以考虑 [切换到夜间更新渠道](get-started-with-scala.html#ChannelUpdate)。

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

* 如果 类型感知高亮显示 高亮显示了正确的代码，而且这是一个很少发生的错误，请尝试在本地禁用该高亮显示。 1. 将代码高亮显示并从主菜单中选择 `代码 | 代码包围` 。 2. 请从列表中选择 / * _ * /.../ * _ * / 选项。 ![环绕代码操作](https://resources.jetbrains.com/help/img/idea/2026.3/T_surround_with_action.png) 错误不再被高亮显示。 ![包围代码操作结果](https://resources.jetbrains.com/help/img/idea/2026.3/T_surround_with_action_result.png) > **Note:** > 默认情况下，类型感知高亮 ![类型感知高亮图标](https://resources.jetbrains.com/help/img/idea/2026.3/type_aware_highlighting_icon.png) 在您的项目中启用。 若要禁用它，请在窗口右下角找到其图标并点击。 再次点击以启用高亮显示。

* 如果大量代码被错误地高亮显示，请考虑启用 基于编译器的高亮显示 。 请前往 `设置 | 语言与框架 | Scala` 并在 编辑器 选项卡上，将错误高亮更改为 编译器 。 ![基于 Scala 编译器的高亮显示](https://resources.jetbrains.com/help/img/idea/2026.3/scala_compiler_based_highlighting.png) > **Note:** > 不过，在此之前，考虑一下可能的缺点。 基于编译器的高亮显示 更慢，它需要更多资源（类型检查需要进行两次，会生成 `.class` 文件），高亮代码没有快速修复建议，它没有针对即时编辑进行优化，并且需要对项目进行完整编译，这意味着它可能无法处理不完整的代码。

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

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

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

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

Procedure:

1. 按 `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS)) 打开设置，然后选择  `构建、执行、部署 | 编译器 | Scala | Scala 编译器服务器` 。

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

![Scala 编译器服务器](https://resources.jetbrains.com/help/img/idea/2026.3/scala_compiler_server.png)

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

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

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

![Scala 服务器设置](https://resources.jetbrains.com/help/img/idea/2026.3/scala_jvm_heap_size.png)

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

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

我们建议您从一开始就选择基于 sbt 的项目。 请参阅 [Scala 入门](get-started-with-scala.html)。

![新 sbt 项目](https://resources.jetbrains.com/help/img/idea/2026.3/scala_project_start.png)

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

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

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

当您的 sbt 进程内存不足时，请在   sbt   设置中增加最大堆大小（点击 ![](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.general.settings.svg)，该选项位于   sbt 项目   工具窗口中）。

![sbt 设置](https://resources.jetbrains.com/help/img/idea/2026.3/sbt_heap_size.png)

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

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

请看这个示例：

![未使用的导入类](https://resources.jetbrains.com/help/img/idea/2026.3/scala_unusedimport.png)

![未使用的 import——用法](https://resources.jetbrains.com/help/img/idea/2026.3/scala_unusedimport2.png)

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

![将导入标记为未使用](https://resources.jetbrains.com/help/img/idea/2026.3/scala_markimportasused.png)

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

[Video](https://resources.jetbrains.com/help/img/idea/2026.3/scala_importpanel.mp4)

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

![自动导入](https://resources.jetbrains.com/help/img/idea/2026.3/scala_autoimport.png)

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

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

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

![Scala 版本更新](https://resources.jetbrains.com/help/img/idea/2026.3/scala_version_update.png)

## IntelliJ Scala Discord 服务器

如果您未在此页面或其他帮助页面中找到问题的答案，建议加入 [IntelliJ Scala Discord 服务器](https://discord.gg/46QJcqAewM)，直接向开发团队提问。

在发布您的问题之前，请尝试搜索已有的解决方案并检查它们是否能解决您的问题。 如果您的问题仍然存在，请务必提供问题的清晰描述、您已经尝试过的方法以及遇到的结果或错误。

