2011-08-03 12 views
6

Tengo algunos problemas bastante molestos con scala. El problema es que puedo compilar un pequeño proyecto de Scala perfectamente, pero cuando los proyectos son más grandes, el compilador falla con un StackOverflowException. Claramente, tengo que aumentar el tamaño de la pila para el compilador, sin embargo, ese es probablemente mi principal problema aquí, no sé cómo.netbeans 7.0 y scala resulta en stackoverflow

estoy empezando NetBeans con estos parámetros:

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" 

Así, por lo que yo sé, -J-Xss8m debería aumentar el tamaño de la pila de rosca a 8 mb. Sin embargo, eso no parece afectar el compilador. Así que traté de pasar el mismo parámetro para el compilador directamente, usando las opciones del compilador, que puedo establecidos en NetBeans, lo que resulta en esto:

-deprecation -J-Xss8m 

Pero, de nuevo, que no ayuda, sigo teniendo La excepción. Busqué en la documentación de netbeans, pero todo lo que encontré fueron los parámetros de inicio de netbeans, que ya había configurado. Espero que alguien aquí pueda darme más información sobre cómo manejar este problema.

Más información: Así que, después de un día, finalmente tuve la oportunidad de probar todo en una máquina diferente. Usé la misma configuración y el mismo compilador, pero para mi sorpresa, no obtuve el mismo resultado. Es decir, en su máquina, el compilador compila todo el código sin excepción. La única diferencia entre la mía y la suya es que tiene más RAM y más potencia de CPU, pero eso no debería ser un problema, ya que ambos usamos netbeans con las mismas opciones de inicio.

Por ahora, incluso probé la RC del compilador Scala 2.9, no ayudó mucho. Además, verifiqué si tengo instalado el plugin scala correcto, ya que podría haber problemas al usar el plugin 2.8 con el compilador 2.9 y viceversa. Sin embargo, estoy usando el compilador 2.9 y el compilador 2.9, así que está bien.

+0

Ocasionalmente he visto el mismo trazado de pila varias veces. Creo que no está relacionado con NetBeans, y en mi caso, se debe principalmente a los errores de nivel de tipo que el compilador no pudo reconocer/procesar correctamente –

+0

Gracias por su respuesta, finalmente pude probar todo eso en un diferente máquina de un amigo. Para mi sorpresa, todo funcionó bien en su máquina, aunque no hay diferencia. Usamos el mismo compilador, el mismo IDE, incluso el mismo sistema operativo. Agregaré más información sobre mi publicación inicial ... – Shelling

Respuesta

3

El problema de dar al compilador Scala más espacio en la pila es similar a especificar más espacio en el montón. Ambas opciones deben especificarse como argumentos de JVM personalizados cuando se ejecuta el compilador de Scala. Sin embargo, Netbeans carece de cualquier tipo de documentación sobre cómo hacerlo, así que aquí está.

La forma de especificar argumentos de JVM personalizados para el compilador de Scala con Netbeans es mediante la personalización de build.xml para cada proyecto.

  1. abierto nbproject/build-impl.xml en la carpeta del proyecto.
  2. Busque "scalac" y encontrará el siguiente objetivo: -init-macrodef-scalac.
  3. Copie toda la definición de destino, péguela en su build.xml, y guárdela.
  4. Cerrar nbproject/build-impl.xml, de ahora en adelante trabajará con build.xml.
  5. En el objetivo que acaba de copiar, localice el <scalac> etiqueta, el anidamiento será el siguiente: target.macrodef.sequential.scalac
  6. Añadir un encargo "jvmargs" atributo a la etiqueta scalac, que se verá de la siguiente manera: < jvmargs scalac = "- Xss2048k -Xmx2000m" ... >
  7. Guardar la build.xml. Ahora, cada vez que compila su proyecto con netbeans, el compilador se ejecutará con los argumentos de jvm personalizados.
+0

finalmente vine a cambiar la configuración, gracias por su ayuda :) – Shelling