如何在IDEA 12中使用外部Scala编译器?

7

如何在IDEA中使用外部Scala编译器?我似乎会遇到随机出现的错误,显示“scala:无法连接到本地主机/127.0.0.1:3200的编译服务器”。

有时它有效,有时则无效。我找不到规律。

以下是日志内容:

9:20:58 PM Auto make completed with errors
9:21:09 PM Using a new (SBT-based) Scala compiler.
           In case of any compilation problems you may enable the previous (internal) compiler by clearing:
           Project Settings / Compiler / Use external build
9:21:10 PM Scala compile server
           Error: Could not create the Java Virtual Machine.
           Error: A fatal exception has occurred. Program will exit.

9:21:12 PM Compilation completed with 1 error and 0 warnings in 3 sec

我正在使用以下工具:
IDEA 12.1 (129.161) Scala编译器2.10.1 Scala插件0.7.213 JDK 1.7 Windows 7
在“项目设置/编译器/使用外部构建”处已经勾选。 在“IDE设置/Scala/运行编译服务器”处也已经勾选。
我需要手动启动编译服务器吗?还需要注意些什么吗?
更新:看起来像是个bug。我发了一个JIRA工单http://youtrack.jetbrains.com/issue/SCL-5523

http://blog.jetbrains.com/scala/2012/12/28/a-new-way-to-compile/ - CrazyCoder
@CrazyCoder,这并没有回答为什么编译器服务器没有启动的问题。 - expert
更多细节应该在idea.log中。如果您使用的是Mac,可能是环境问题,可以像这样运行IDEA:open -a /Applications/IntelliJ\ IDEA\ 12.app/ - CrazyCoder
@CrazyCoder,看起来只有在第一次调试会话中才能正常工作。所有后续的运行都会导致“错误:找不到或加载主类Test”的错误。 - expert
@CrazyCoder http://youtrack.jetbrains.com/issue/SCL-5523 - expert
显示剩余2条评论
7个回答

7

您需要将堆大小从1024降低到512或其他值。然后可以创建并启动编译服务器。 尝试使用InteliJ 13.0.2 (133.331)和Scala插件0.26.361


这对我有用,你知道为什么会有所不同吗? - Vogon Jeltz
毫无头绪。我主要是C#开发者,只偶尔使用Java和Scala。这种堆大小调整对于我们这些低级的C#开发者从来没有可用的选项。 :) 只是开个玩笑。我真的不知道为什么。 - imgen

3

前往设置 -> 编译器并取消勾选 "使用外部构建"


它对我有效。您介意提供一下这个提示的解释吗? - Observer
其实我是偶然发现的,但它确实有效,所以我想分享一下。 - Rotem

1
我在使用IntelliJ时遇到了同样的问题。如果您打开事件日志(位于IDE右下角),您可以看到错误消息,即scala编译器未与jdk版本配置,并提供一个设置链接。
在“设置 > 语言和框架 > Scala编译服务器 > JVM SDK”中,将您正在用于IDE的java设置为this screenshot中所示。

1
我提出的错误已被标记为“已解决”。JetBrains的解释是:“已解决”意味着默认情况下编译现在可以工作,因此主要问题(如标题所述)已得到解决。但是,在自动进行编译之前,仍无法轻松实现自动启动编译服务器。这就是为什么Scala项目的自动编译仍然默认关闭的原因。当然,我们最终会支持自动编译。

不行...我用的是Intellij 15,但还是出现了这个问题。 - arviman

1
通常情况下,无需更改任何设置即可正常工作。这听起来像是端口冲突、上一次未完全关闭的结果或堆大小不足。

enter image description here

尝试通过转到设置 -> Scala(在IDE设置列表中,靠近底部) -> TCP端口来更改编译服务器端口。在那里,您还可以设置不同的最大堆大小。

该问题可能与this打开的票据有关。


没有,这并没有产生任何影响。事实上,我没有看到任何已打开端口的进程。你知道是谁和何时启动编译服务器吗? - expert
自从12版本以来,IntelliJ就开始了。所以在你重新启动并启动IntelliJ之后,它是否会给你那个异常? - Alex Yarmula
@lexwriteshere 看起来是 IDEA 的 bug。我已经添加了 JIRA 票据的链接。感谢您的帮助,Alex! - expert

0

你可以尝试我写的这个简单项目,它使用了sbt-idea插件。它应该可以直接在最新的Intellij IDEA或Scala IDE(Eclipse)中运行。

骨架


0

将堆大小减小到512或128 MB对我有用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接