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

标签 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 命令行方式来构建和运行,但 Idea 现在不应该有 native 方式吗?我在下面说明的第一个窗口在我单击 Run-Debug 或 Run-Run 时弹出,提示它是,以及第二个(项目结构窗口)被调用。

Run/Debug Configurations window

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

Project Structure window

为什么它提示没有顺便使用的 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 版本。

最佳答案

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

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

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

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

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

    解决方案:

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

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

    关于scala - 如何在 IntelliJ 13 中调试 Scala SBT 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23352213/

    相关文章:

    Scala Spark RDD 当前分区数

    scala - `doto` 用于 Scala

    scala - 泛型中奇怪的嵌套结构类型

    java - 使用 Gradle 时在 Intellij 中进行调试

    intellij-idea - Intellij 意外引用行为

    python - Spark MapPartitionRDD 无法打印值

    c - 有没有很好的 Valgrind 替代 Windows?

    java - 特殊调试线(java)

    即使正确导入 Java 11 方法,IntelliJ 也无法识别它们

    android - 如何切换到Gradle插件的非实验版本?