Expediente X

06:01PM dic 07, 2003 in category Programacion by Alberto Gimeno

Ayer estaba compilando en línea de comandos con Ant y me empezaron a ocurrir cosas muy extrañas. Al ejecutar unas clases me sucede algo que nunca me había pasado: me da un java.lang.VerifyError. Eliminé todos los archivos de bytecodes y volví a compilar. Nada, el error persistía. Pensé que era culpa del j2sdk de Sun ya que estaba trabajando con una versión beta, así que me bajé la última versión del j2sdk1.4, la instalé y probé de nuevo. Nada, me seguía apareciendo ese dichoso error.

Como no sabía que hacer me puse a hacer otras cosas con el ordenador. Más tarde volví a probar, y nada. Cúal fué mi sorpresa al darme cuenta de que había indicado en el build.xml que usara gcj para compilar. Dije: "bueno, pues voy a compilar con el javac del jsdk de Sun...", y sorpresa!! no compilaba el código que tantos días llevaba compilando. Tenía bastantes errores. Pero, ¿cómo es posible que hace unas horas y durante varios días el gcj hubiese sido capaz de compilar esos archivos que contenían errores? Si alguien tiene curiosidad los errores más frecuentes eran "import"s olvidados y expresiones con poco sentido como comparar null con un boolean: if(funcionBooleana() == null). ¿Cómo había sido capaz gcj de "adivinar" lo que pretendía hacer el código? Porque el código en días anteriores compilaba y ejecutaba bien.

Arreglé los errores y volví a compilar, ahora todo funcionaba bien.... o no. Me dió una NullPointerException; dije "Bueno, esto se arregla en seguida, a ver en qué línea salta el error...". Sorpresa!! el printStackTrace() no me mostraba las líneas por donde pasaba la excepción! "Y ahora qué hago" me pregunté. Bien, lo que hice fue compilar con gcj y voilá ningún problema. Así que mientras no me salga otro java.lang.VerifyError seguiré compilando con gcj.

Comentarios[4]

Comentarios:

yo diria q has dejado una libreria antigua dentro del classpath del script.

Lo digo por la pista de antiguos imports... si eso no casca es porque en algun lado existia ese paquete.

Pa otra vez paciencia y mira despacito ;-)

Enviado por lasterra en diciembre 08, 2003 a las 11:00 PM GMT+01:00 #

<p>Dudo que fuera problema de CLASSPATH, porque en ocasiones los imports que faltaban eran de librerías del API estándar como java.util, y durante los días que he estado programando no he tocado el CLASSPATH.</p>

<p>Además, cambiaba la propiedad "build.compiler" a "gcj" y compilaba, inmediatemente después la cambiaba a "modern" y no compilaba. Podía repetirlo cuantas veces quisiera.</p>

<p>Y no sólo tenía errores de imports, recuerdo que una vez comparaba un boolean con null.</p>

Enviado por gimenete en diciembre 09, 2003 a las 12:00 AM GMT+01:00 #

Hola,
A mi cuando me pasa eso, le añado a la tarea javac del ant el atributo debug="on" y normalmente ya me muestra las lineas en el printStackTrace().
No se si te servira :)

Enviado por GreenEyed en enero 08, 2004 a las 02:31 PM GMT+01:00 #

hola me gustaria saber si alguien sabe como compilar con el gcj package q tengo q importas de clase de java gracias

Enviado por manuel en octubre 04, 2006 a las 09:40 AM GMT+01:00 #

Enviar un comentario:
  • Sintaxis HTML: Deshabilitado