"Error Error de compilación: cadena codificada demasiado larga:" al realizar una compilación

Tengo un proyecto de Grails que se ejecuta correctamente en modo de desarrollo, pero cuando intento crear un archivo de guerra, aparece el siguiente mensaje y detiene la compilación.

| Compiling 1 source files
| Compiling 1 source files.
| Compiling 1 source files..
| Compiling 1 source files...
| Compiling 1 source files....
| Compiling 1 source files.....
| Compiling 16 GSP files for package [ProjectName]
| Compiling 16 GSP files for package [ProjectName].
| Error Compilation error: encoded string too long: 108421 bytes

Grails no me da ninguna otra información en términos de qué GSP o línea tiene el problema, ¿alguien vio que esto sucediera?

Aquí están las estadísticas de los griales, yo diría que es un proyecto bastante pequeño.

+----------------------+-------+-------+
| Name                 | Files |  LOC  |
+----------------------+-------+-------+
| Controllers          |     6 |   624 | 
| Domain Classes       |     6 |   109 | 
| Java Helpers         |     1 |    96 | 
| Unit Tests           |    12 |   565 | 
| Scripts              |     1 |     4 | 
+----------------------+-------+-------+
| Totals               |    26 |  1398 | 
+----------------------+-------+-------+

preguntado el 12 de junio de 12 a las 17:06

¿Parece que tienes algunas páginas HTML estáticas masivas o algo así? -

@tim_yates No realmente, la mayoría de las vistas se representan desde scaffolding. El GSP más grande tiene 65 líneas. -

@tim_yates, ¿hay alguna manera de averiguar qué GSP/archivo está causando este problema? -

no hay grandes archivos estáticos html (que no se cuentan en el informe de estadísticas)? -

@tim_yates ni siquiera un solo archivo HTML... -

3 Respuestas

Parece que este es un error de griales con versiones antes de 2.3.7 pero está arreglado en 2.3.7 y superior. Tiene dos opciones para actualizar o seguir los pasos a continuación

  1. Encuentre todas las páginas gsp con un tamaño de archivo superior a 64K.
  2. Agregue <% /* comentario para romper el bloque gsp estático */ %> en el medio de sus páginas estáticas (agréguelo al final de las etiquetas html, por ejemplo, después de </P> etc.).

Esto hará que Grails piense que está procesando dos fragmentos y permitirá que se procese.

respondido 20 nov., 14:15

He visto esto antes. ¡Exactamente lo que comentó @tim_yates! Se refactorizaron algunos gsp [incluir por ejemplo] y todo volvió a estar bien. Además, investigando un poco sobre esto, encontré algunas cosas interesantes sobre DataOutputStream.java. parece tener un límite de 64kb para objetos de cadena.

Tal vez este también puede ayudarte.

¡Aclamaciones!

Respondido el 12 de junio de 12 a las 19:06

En realidad no, la mayoría de las vistas se representan desde scaffolding. El GSP más grande tiene 65 líneas. - savia

Eso es raro. Eche un vistazo a workdir/gspcompile y vea el último archivo compilado. Eso podría darte alguna pista... - Tiago Farias

Mis disculpas, pero ¿dónde se supone que debe estar ubicado este directorio de trabajo? - savia

$HOME/.grails/(version)/projects/projectname/gspcompile pero puede especificar esto en su BuildConfig.groovy usando la variable grails.project.work.dir. - Tiago Farias

Bueno, el único archivo que se genera es gsp_projectNameerror_gsp.groovy, es un archivo de 2 KB y ni siquiera he personalizado una página de error, ¡así que este es el archivo predeterminado! - savia

Nunca supe cuál era el problema, todo lo que hice fue mover todo el archivo necesario a un nuevo proyecto y ¡este error desapareció!

Respondido 09 ago 12, 06:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.