【问题标题】:How to debug a Scala SBT project in IntelliJ 13?如何在 IntelliJ 13 中调试 Scala SBT 项目?
【发布时间】:2014-06-14 15:44:54
【问题描述】:

我从未尝试在 Scala 中使用任何类型的调试器,也从未尝试在 IntelliJ Idea 中调试任何东西(虽然我一直在使用 Idea 编写 Scala 代码)。现在,作为the recent IntelliJ Idea 13 has gotten built-in SBT support,我尝试使用此功能(而不是旧的 sbt-idea SBT 插件方式)导入 SBT 项目,这似乎有效。但我想不通的是在这种情况下如何运行和调试程序。当然,我可以使用传统的 SBT 命令行方式来构建和运行,但 Idea 现在不应该有本机方式吗?当我单击 Run-Debug 或 Run-Run 时,我在下面说明的第一个窗口弹出,以及第二个(项目结构窗口)被调用。

(请注意,运行按钮已禁用(灰色)并且无论我做什么都不会启用)

为什么它抱怨 SBT::scala-compiler-bundle:2.11.0 库没有顺便使用?我打算如何使用它?需要的不是编译器/SBT/IDE吗?

另外,当我点击 Build - Make Project an Abnormal 构建过程终止异常(java.lang.reflect.InvocationTargetException)出现:

Error:Abnormal build process termination: Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.jetbrains.jps.cmdline.Launcher.main(Launcher.java:54) Caused by: java.lang.IllegalStateException: failed to create a child event loop at io.netty.util.concurrent.MultithreadEventExecutorGroup.(MultithreadEventExecutorGroup.java:73) at io.netty.channel.MultithreadEventLoopGroup.(MultithreadEventLoopGroup.java:51) at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:72) at io.netty.channel.nio.NioEventLoopGroup.(NioEventLoopGroup.java:58) at org.jetbrains.jps.cmdline.BuildMain.main(BuildMain.java:77) ... 5 more Caused by: io.netty.channel.ChannelException: failed to open a new selector at io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:128)

我做错了什么?

PS:到目前为止,我使用的是最新的稳定版 Java、Scala、SBT 和 Idea。

【问题讨论】:

  • 我以前见过“SBT::scala-compiler-bundle:2.11.0”类型错误...通常是我的所有自动完成内容都失败并且项目停止在其中构建IntellJ(但仍然可以从命令行完美构建)。在这些情况下,我通常会删除 .idea 目录并重新导入。 IntellJ 对 Scala 的支持仍然非常糟糕。我没有使用过调试器,但我对这个问题的答案很感兴趣,因为我每天都使用 Scala+SBT+IntellJ。
  • 好吧,@djsumdog,只需删除 .idea 目录并按照您的建议重新导入似乎已经解决了问题 - 现在构建、运行和调试工作正常(所以,我认为这使您有资格发布将此建议作为答案并将其作为解决方案获得批准)。但是“SBT::scala-compiler-bundle:2.11.0”错误仍然存​​在。也许最初的问题原因是最初的 Idea 设置(当我第一次导入项目时我们在那里)很糟糕(没有设置 JDK,项目在 2.11 中时选择了 scala 2.10 等))跨度>
  • 我还注意到,一旦我导入一个新项目,它就永远不会起作用,我总是必须删除 .idea 目录并重新导入。也许这是因为 Idea 做了一些必要的下载,SBT 本身没有或类似的东西。另一个奇怪的事情是,一旦我导入项目,我总是必须在项目结构窗口中指定 Scala 2.11 版本 - Idea 似乎忽略了它在 build.sbt 中设置并默认将其设置为 2.10。

标签: scala debugging intellij-idea sbt


【解决方案1】:

如果有人遇到类似的事情,例如:

  • 自动完成失败
  • 在“项目结构”内,它抱怨“未使用 scala-compiler-bundle”
  • IDE 中发生了一些其他奇怪的事情

您可以按照之前评论中的建议进行操作(也许这对您的情况有帮助!)或者您做对我有帮助的事情..

我做了什么来创建我的项目:

我使用 activator 命令创建了我的基本项目(使用 play 2.3 scala 模板)。之后我导入了项目(IDEA 13.1.4)。从命令行构建项目非常完美,而我的 IDE 中的项目变得疯狂......(就像我上面描述的那样)

解决方案:

转到您的“项目结构”并删除在项目导入时配置的三个 IntelliJ 模块之一。它配置了一个包含所有必要依赖项的“root”模块、一个“root-build”模块和一个以您的项目命名的模块。解决方案是删除以您的项目命名的模块并将“scala-compiler-bundle”添加到您的根模块。之后,我的项目在 IntelliJ 中运行良好。

我希望这对将来的某人有所帮助。

【讨论】:

  • 我遇到了类似的问题,只是重命名重新创建了 Idea 项目(删除或重命名 .idea 文件夹,然后新建项目并指向 sbt 文件)。没有找到其他同步 IDEA 的方法。
猜你喜欢
  • 2019-06-20
  • 1970-01-01
  • 2017-03-13
  • 2014-06-16
  • 2017-03-22
  • 2014-04-07
  • 1970-01-01
  • 2014-07-06
  • 2017-03-07
相关资源
最近更新 更多