如何在IntelliJ 13中调试Scala SBT项目?

时间:2014-04-28 22:24:10

标签: scala debugging intellij-idea sbt

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

Run/Debug Configurations window

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

Project Structure window

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

另外,当我单击Build - Make Project异常构建过程终止异常(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版本。

1 个答案:

答案 0 :(得分:3)

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

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

您可以按照之前的评论中的建议(也许这有助于您的情况!)或者您做了帮助我的事情。

我为创建项目所做的工作:

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

解决方案:

转到“项目结构”并删除项目导入中配置的IntelliJ三个模块之一。它配置了一个包含所有必要依赖项的“根”模块,一个“根构建”模块和一个以项目命名的模块。解决方案是删除以项目命名的模块,并将“scala-compiler-bundle”添加到根模块。之后我的项目在IntelliJ中完全正常工作。

我希望这将有助于将来。