netbeans 7.0 和 scala 导致 stackoverflow

问题描述 投票:0回答:1

我在使用 scala 时遇到了一些相当烦人的问题。问题是,我可以完美地编译小型 scala 项目,但是当项目较大时,编译器会崩溃并出现 StackOverflowException。 显然,我必须增加编译器的堆栈大小,但是,这可能是我的主要问题,我不知道如何。

我正在使用这些参数启动 netbeans:

netbeans_default_options="-J-client -J-Xmx512m -J-Xss8m -J-Xms512m -J-XX:PermSize=128m -J-XX:MaxPermSize=512m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true"

因此,据我所知,-J-Xss8m 应该将线程堆栈大小增加到 8 mb。然而,这似乎并不影响编译器。因此,我尝试使用编译器标志(我可以在 netbeans 中设置)将相同的参数直接传递给编译器,结果如下:

-deprecation -J-Xss8m

但是,这并没有帮助,我仍然遇到异常。我搜索了netbeans文档,但我找到的只是netbeans启动参数,这些参数是我已经设置的。我希望这里有人可以给我更多关于如何处理这个问题的信息。

更多信息: 因此,一天后我终于有机会在另一台机器上尝试一切。我使用了相同的设置和相同的编译器,但令我惊讶的是,我没有得到相同的结果。这意味着,在他的机器上,编译器会毫无例外地编译整个代码。 我的计算机和他的计算机之间的唯一区别是,他的计算机有更多的 RAM 和 CPU 能力,但这不应该成为交易,因为我们都使用具有相同启动选项的 netbeans。

到现在为止,我什至尝试了2.9 scala编译器的RC,但没有多大帮助。另外,我检查了是否安装了正确的 scala 插件,因为在 2.9 编译器中使用 2.8 插件时可能会出现问题,反之亦然。不过,我使用的是 2.9 插件和 2.9 编译器,所以没关系。

scala netbeans stack-overflow
1个回答
3
投票

给Scala编译器更多的堆栈空间的问题类似于指定更多的堆空间。运行 Scala 编译器时,必须将这两个选项指定为自定义 JVM 参数。然而 Netbeans 缺乏任何关于如何执行此操作的文档,所以这里是。

使用 Netbeans 为 Scala 编译器指定自定义 JVM 参数的方法是为每个项目自定义 build.xml。

  1. 在项目文件夹中打开nbproject/build-impl.xml
  2. 搜索“scalac”,您将找到以下目标:-init-macrodef-scalac
  3. 复制整个目标定义,将其粘贴到您的 build.xml 中,然后保存。
  4. 关闭nbproject/build-impl.xml,从现在开始您将使用build.xml
  5. 在刚刚复制的目标中,找到标签,嵌套如下:target.macrodef.sequential.scalac
  6. 向 scalac 标签添加自定义“jvmargs”属性,它将如下所示:
  7. 保存build.xml。现在,每当您使用 netbeans 编译项目时,编译器都将使用自定义 jvm 参数运行。
© www.soinside.com 2019 - 2024. All rights reserved.