IntelliJ中的Scala编译错误:找不到输出目录

时间:2018-01-27 23:36:19

标签: scala intellij-idea compiler-errors dotty

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编译?是否会导致此错误?否则,这个错误意味着什么?

重现

  1. 删除以前安装的任何设置后,使用新安装的IntelliJ IDEA。

  2. 使用git clone --recursive https://github.com/lampepfl/dotty

  3. 下载存储库
  4. 确保安装了最新版本的sbt。从项目的根目录运行sbt managedSources

  5. 使用类型Import project from external model的{​​{1}}设置和Oracle JDK 1.8导入IntelliJ。否则保持默认值。

  6. 右键单击项目资源管理器中的项目,然后选择sbt。卸载除Load/Unload Modules...dottydotty-compilerdotty-library以外的所有模块。 (http://dotty.epfl.ch/docs/contributing/intellij-idea.html

  7. 中列出的模块
  8. 在项目资源管理器中,点击dotty-interfaces。在compiler菜单中点击Build

  9. 什么不能解决?

    它无法解决任何问题Build Module 'dotty-compiler' => File

    它没有修复任何东西来保持所有模块的加载。

2 个答案:

答案 0 :(得分:2)

您可以尝试使用内置的sbt shell来编译sbt项目:

enter image description here

答案 1 :(得分:1)

根据我的经验,这种错误的一个原因是你在shell中打开输出文件夹或类似的东西。看起来有时IDEA会尝试删除整个文件夹,如果由于使用该文件夹而无法执行此操作,则会神秘地导致此类错误。