![](/img/trans.png)
[英]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.