IntelliJ 中的 Scala 编译错误:找不到输出目录
Scala compilation error in IntelliJ: could not find an output directory
IntelliJ IDEA(最新的社区版本)无法编译 dotty 编译器并出现错误:
scala.reflect.internal.FatalError: Could not find an output directory for
/src/contrib/dotty/scala-backend/src/compiler/scala/tools/nsc/backend/ScalaPrimitivesOps.scala
in List(
(/src/contrib/dotty/compiler/test-resources,/src/contrib/dotty/compiler/target/scala-2.12/classes),
(/src/contrib/dotty/compiler/target/scala-2.12/resource_managed/main,/src/contrib/dotty/compiler/target/scala-2.12/classes),
(/src/contrib/dotty/compiler/target/scala-2.12/src_managed/main,/src/contrib/dotty/compiler/target/scala-2.12/classes),
(/src/contrib/dotty/compiler/test,/src/contrib/dotty/compiler/target/scala-2.12/classes),
(/src/contrib/dotty/compiler/src,/src/contrib/dotty/compiler/target/scala-2.12/classes))
显然代码没有任何问题,而且 Dotty 似乎可以使用 sbt 正常编译,因为 run
命令有效。 sbt 项目是否需要做一些特殊的事情才能使用 sbt 进行 IDEA 编译? 是否是导致此错误的原因?否则,这个错误是什么意思?
重现
删除以前安装的任何设置后使用新安装的 IntelliJ IDEA。
使用git clone --recursive https://github.com/lampepfl/dotty
下载存储库
确保安装了最新版本的 sbt
。 运行 sbt managedSources
来自项目的根目录。
使用 sbt
类型的设置 Import project from external model
和 Oracle JDK 1.8 导入 IntelliJ。否则保持默认值。
在项目资源管理器中右击项目并选择Load/Unload Modules...
。卸载除 dotty
、dotty-compiler
、dotty-library
和 dotty-interfaces
之外的所有模块。 (http://dotty.epfl.ch/docs/contributing/intellij-idea.html中列出的模块)
在项目资源管理器中,单击 compiler
。从 Build
菜单中单击 Build Module 'dotty-compiler'
。
什么没有解决
它没有解决任何问题 File
=> Invalidate Caches/Restart
.
它没有解决任何问题以保持所有模块加载。
根据我的经验,出现此类错误的一个原因是您是否在 shell 或类似的地方打开了输出文件夹。看起来有时 IDEA 会尝试删除整个文件夹,如果因为使用了该文件夹而不能这样做,它会神秘地导致这样的错误。
您可以尝试使用内置的 sbt shell 来编译 sbt 项目:
IntelliJ IDEA(最新的社区版本)无法编译 dotty 编译器并出现错误:
scala.reflect.internal.FatalError: Could not find an output directory for
/src/contrib/dotty/scala-backend/src/compiler/scala/tools/nsc/backend/ScalaPrimitivesOps.scala
in List(
(/src/contrib/dotty/compiler/test-resources,/src/contrib/dotty/compiler/target/scala-2.12/classes),
(/src/contrib/dotty/compiler/target/scala-2.12/resource_managed/main,/src/contrib/dotty/compiler/target/scala-2.12/classes),
(/src/contrib/dotty/compiler/target/scala-2.12/src_managed/main,/src/contrib/dotty/compiler/target/scala-2.12/classes),
(/src/contrib/dotty/compiler/test,/src/contrib/dotty/compiler/target/scala-2.12/classes),
(/src/contrib/dotty/compiler/src,/src/contrib/dotty/compiler/target/scala-2.12/classes))
显然代码没有任何问题,而且 Dotty 似乎可以使用 sbt 正常编译,因为 run
命令有效。 sbt 项目是否需要做一些特殊的事情才能使用 sbt 进行 IDEA 编译? 是否是导致此错误的原因?否则,这个错误是什么意思?
重现
删除以前安装的任何设置后使用新安装的 IntelliJ IDEA。
使用
git clone --recursive https://github.com/lampepfl/dotty
下载存储库
确保安装了最新版本的
sbt
。 运行sbt managedSources
来自项目的根目录。使用
sbt
类型的设置Import project from external model
和 Oracle JDK 1.8 导入 IntelliJ。否则保持默认值。在项目资源管理器中右击项目并选择
Load/Unload Modules...
。卸载除dotty
、dotty-compiler
、dotty-library
和dotty-interfaces
之外的所有模块。 (http://dotty.epfl.ch/docs/contributing/intellij-idea.html中列出的模块)在项目资源管理器中,单击
compiler
。从Build
菜单中单击Build Module 'dotty-compiler'
。
什么没有解决
它没有解决任何问题 File
=> Invalidate Caches/Restart
.
它没有解决任何问题以保持所有模块加载。
根据我的经验,出现此类错误的一个原因是您是否在 shell 或类似的地方打开了输出文件夹。看起来有时 IDEA 会尝试删除整个文件夹,如果因为使用了该文件夹而不能这样做,它会神秘地导致这样的错误。
您可以尝试使用内置的 sbt shell 来编译 sbt 项目: