[英]Running scala/sbt from command line when it's installed through IntelliJ
[英]Scala code compiles through command-line sbt but fails when compiled through Intellij Idea - how set up Intellij to use external sbt?
我正在使用 IntelliJ Idea CE(版本 2019.3.4)在 macOS(发布时版本 10.15.4)上使用纯 Scala 编写解析器。 项目设置为sbt项目。
当我通过运行sbt
通过命令行编译和测试项目时,然后compile
,然后test
(或者只是sbt
然后test
),一切正常。 代码按预期编译,并且所有测试都通过。
但是,当我尝试通过 IntelliJ GUI 编译代码时,出现以下错误消息:
Error:scala: Error while emitting Protobuf3Parser.scala
assertion failed: Invalid interfaces in LPredefinedType;: List(LFieldType;, Lscala/Product;)
问题代码似乎是
sealed trait FieldType
case class PredefinedType(t: DataType) extends FieldType
case class UserDefinedType(t: FullIdent) extends FieldType
其中DataType
是一个sealed trait
,而FullIdent
是一个case class
。
此错误的 output 看起来类似于官方 Scala 语言存储库中此错误产生的 output: https://github.com/scala/bug/issues/10107 。 虽然我不是 Scala 内部的专家,但我收到的错误似乎是 Scala 在 JVM 上表示其类型系统的方式的问题。
据一位比我更熟悉 Scala 的同事说,JetBrains 在 IntelliJ 本身中使用了他们自己的编译器实现,有时它的行为与官方 Scala 实现不同——这可以解释这里发生的事情。
有没有办法配置 IntelliJ 使用外部 sbt 和 scalac 版本?
或者这个错误是否来自其他地方?
我已经尝试了很多 Google 搜索并查看并尝试了不同的 IntelliJ 设置,但无济于事。
有一种方法。 Go 到设置,向下钻取“构建、执行、部署”+“构建工具”+“sbt”,您会发现每个项目都可以选择是否使用 sbt(“sbt shell”)进行构建.
那天有点晚了,但我尝试了两个小时,最后我点击了底部的构建和同步和魔法瞧,它添加了外部库并且它起作用了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.