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

Iva*_*van 7 debugging scala intellij-idea sbt

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

运行/调试配置窗口

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

项目结构窗口

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

此外,当我单击构建 - 使项目异常构建过程终止异常(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版本.

mue*_*air 3

如果有人经历类似的事情,例如:

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

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

我为创建项目所做的事情:

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

解决方案:

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

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