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

如何在IntelliJ 13中调试Scala SBT项目?,scala,debugging,intellij-idea,sbt,Scala,Debugging,Intellij Idea,Sbt,我从未尝试过在Scala中使用任何类型的调试器,也从未尝试过在IntelliJ Idea中调试任何东西(而我一直在使用Idea编写Scala代码)。现在,当我尝试使用这个特性(而不是旧的sbt思想sbt插件方式)导入sbt项目时,这似乎是可行的。但我不知道在这种情况下如何运行和调试程序。当然,我可以使用传统的SBT命令行方式来构建和运行,但Idea现在不应该有本地方式吗?我在下面演示的第一个窗口,当我单击Run Debug或Run时弹出,表明它是,以及第二个窗口(Project Structur

我从未尝试过在Scala中使用任何类型的调试器,也从未尝试过在IntelliJ Idea中调试任何东西(而我一直在使用Idea编写Scala代码)。现在,当我尝试使用这个特性(而不是旧的sbt思想sbt插件方式)导入sbt项目时,这似乎是可行的。但我不知道在这种情况下如何运行和调试程序。当然,我可以使用传统的SBT命令行方式来构建和运行,但Idea现在不应该有本地方式吗?我在下面演示的第一个窗口,当我单击Run Debug或Run时弹出,表明它是,以及第二个窗口(Project Structure窗口),它被称为

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

为什么它会抱怨SBT::scala编译器包:2.11.0库没有被使用?我打算如何使用它?编译器/SBT/IDE不是需要它吗

此外,当我单击Build-Make Project时,会出现异常的生成过程终止异常(java.lang.reflect.InvocationTargetException):


错误:异常生成进程终止:
线程“main”java.lang.reflect.InvocationTargetException中出现异常
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:483)
位于org.jetbrains.jps.cmdline.Launcher.main(Launcher.java:54)
原因:java.lang.IllegalStateException:未能创建子事件循环
位于io.netty.util.concurrent.MultithreadEventExecutorGroup。(MultithreadEventExecutorGroup.java:73)
位于io.netty.channel.MultithreadEventLoopGroup。(MultithreadEventLoopGroup.java:51)
位于io.netty.channel.nio.NioEventLoopGroup。(NioEventLoopGroup.java:72)
位于io.netty.channel.nio.NioEventLoopGroup。(NioEventLoopGroup.java:58)
位于org.jetbrains.jps.cmdline.BuildMain.main(BuildMain.java:77)
... 还有5个
原因:io.netty.channel.ChannelException:无法打开新选择器
位于io.netty.channel.nio.NioEventLoop.openSelector(NioEventLoop.java:128)

我做错了什么


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

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

  • 自动完成失败
  • 在“项目结构”内部,它抱怨“没有使用scala编译器包”
  • IDE中还发生了一些奇怪的事情
你可以按照之前评论中的建议去做(也许这对你的情况有帮助!),也可以按照我的建议去做

创建项目时我做了什么:

我使用activator命令创建了我的基本项目(使用Play2.3Scala模板)。之后,我导入了该项目(IDEA 13.1.4)。当IDE中的项目变得疯狂时,从命令行构建项目运行良好。。(如上所述)

解决方案:

转到“项目结构”,删除项目导入中配置的三个模块IntelliJ中的一个。它配置了一个包含所有必需依赖项的“根”模块、“根构建”模块和一个以项目命名的模块。解决方案是删除以项目命名的模块,并将“scala编译器包”添加到根模块中。在那之后,我的项目在IntelliJ内部运行得非常好


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

我以前见过“SBT::scala编译器包:2.11.0”类型的错误……通常是在我所有自动完成的东西都失败,项目停止在IntellJ中构建时(但仍然可以从命令行完美构建)。在这些情况下,我通常会删除.idea目录并重新导入。IntellJ的Scala支持仍然存在可怕的缺陷。我没有使用调试器,但我对这个问题的答案很感兴趣,因为我每天都在使用Scala+SBT+IntellJ。好吧,@djsumdog,简单地删除.idea目录,然后按照您的建议重新导入,似乎已经解决了这个问题-现在可以构建、运行和调试了(因此,我认为这使您有资格将此建议作为答案发布,并将其作为解决方案获得批准)。但是“SBT::scala编译器包:2.11.0”错误仍然存在。可能最初的问题原因是初始Idea设置(当我第一次导入项目时出现的)不好(项目处于2.11版本时,未选择JDK集、scala 2.10等)我还注意到,一旦我导入一个新项目,它就永远不起作用了,我总是要删除
.idea
目录并重新导入。这可能是因为idea进行了一些必要的下载,而SBT本身并没有这样做。另一件奇怪的事情是,我总是必须在项目结构中指定Scala 2.11版本导入项目后的窗口-Idea似乎忽略了在build.sbt中设置的项目,默认情况下将其设置为2.10。我遇到了类似的问题,只是重命名重新创建的Idea项目(删除或重命名.Idea文件夹,然后新建项目并指向sbt文件)。没有找到其他方法使Idea同步。