Herramientas de desarrollo Java (JDT): notas del release

1.0 Introducción
2.0 Problemas conocidos y limitaciones
    2.1 Ejecutar programas Java con caracteres que no son Latin-1 en nombres de clase o paquete
    2.2 Atributos de depuración faltantes
   2.3 Establecer puntos de interrupción
    2.4 Utilizar la sustitución de código en caliente
    2.5 Cuaderno
    2.6 Depurar a través de conexiones lentas
    2.7 Actualizar valores inspeccionados
    2.8 Recorrer principal en métodos nativos que realizan E/S
    2.9 Buscar referencias de campos de constantes
    2.10 Unidades de compilación Java fuera de la vía de acceso de clases de construcción
    2.11 Acciones para modificar archivos solo de lectura
    2.12 Plantillas de código Java
    2.13 Organizar importación e importaciones desde paquetes por omisión
    2.14 Acción Añadir Javadoc para campos
   2.15 Ayuda flotante de Javadoc en el editor Java
   2.16 Se visualiza el código HTML > en la clase Java nueva, en lugar de >
    2.17 Problema al abrir el editor de archivos de clase
    2.18 No se puede ejecutar ni depurar una clase en un proyecto cuyo nombre tenga caracteres GB18030
    2.19 No se pueden depurar desbordamientos de pila
    2.20 Limitación de la evaluación   
    2.21 Puntos de interrupción fuera de la vía de acceso de clases de construcción  
    2.22 Arreglo rápido e importaciones desde paquetes por omisión   
    2.23 Las acciones de cortar, copiar y pegar no funcionan para los recursos enlazados en las vistas que muestran elementos Java
    2.24 Los conjuntos de trabajo Java no funcionan correctamente para los elementos del contenedor de la biblioteca JRE del sistema   
    2.25 No se puede generar Javadoc para los paquetes en cuyo nombre haya caracteres GB18030
    2.26 La edición enlazada no funciona correctamente en la modalidad de sobrescritura
    2.27 La plantilla de generación de código del bloque catch debe acabar con un carácter de nueva línea si la última línea es un comentario

1.0 Introducción

Este apartado contiene información sobre los problemas conocidos y las limitaciones de las herramientas de desarrollo Java.

2.0 Problemas conocidos y limitaciones

2.1 Ejecutar programas Java con caracteres que no son Latin-1 en nombres de clase o paquete

Podría recibir un java.lang.NoClassDefFoundError al ejecutar programas Java que tengan caracteres que no sean Latin en los nombres de clase o paquete. Un método alternativo consiste en empaquetar los archivos de clase como un archivo JAR y ejecutar el programa fuera del JAR, en lugar de hacerlo directamente desde el sistema de archivos. 

2.2 Atributos de depuración faltantes

El depurador requiere que los archivos de clase se compilen con atributos de depuración para poder visualizar números de líneas y variables locales. Con bastante frecuencia, las bibliotecas de clases (por ejemplo, rt.jar) se compilan sin atributos de depuración completos, y por tanto las variables locales y argumentos de método para dichas clases no son visibles en el depurador.

2.3 Establecer puntos de interrupción

En general, el depurador no le permitirá colocar puntos de interrupción en líneas de código que no sean ejecutables (comentarios, líneas en blanco, etc.). Sin embargo, existen algunos casos en los que el depurador permitirá puntos de interrupción en líneas de código que no son ejecutables. Por ejemplo, el depurador permitirá colocar un punto de interrupción en una declaración de variable que no contenga un inicializador. Tenga en cuenta que los puntos de interrupción habilitados instalados satisfactoriamente en una línea ejecutable de una VM en ejecución (depurable) se visualizan con una marca de selección. Los puntos de interrupción que se visualizan sin una marca de selección no están instalados en una VM en ejecución (depurable).

2.4 Utilizar sustitución de código en caliente

La sustitución de código en caliente está soportada en las VM JDK 1.4.x y en las VM IBMR J9. La sustitución de código en caliente está limitada a los cambios que no afectan a la forma de una clase. Es decir, se soportan los cambios dentro de métodos existentes, pero no se soporta la adición o eliminación de miembros.

La sustitución de código en caliente y la acción de recorrer en las VM de JDK 1.4.0 no son fiables. 

2.5 Cuaderno

El establecimiento de un punto de interrupción dentro de una página del cuaderno no está soportado.

Cuando se ejecuta código en el cuaderno que llama a System.exit(int) directa o indirectamente, no puede completarse la evaluación y provocará que se visualice un rastreo de pila para una excepción com.sun.jdi.VMDisconnectedException en el editor del cuaderno.

La terminación de una página del cuaderno mientras está realizando una evaluación provoca que se visualice una excepción com.sun.jdi.VMDisconnectedException en el editor del cuaderno.

2.6 Depurar a través de conexiones lentas

Una preferencia global de depuración de Java especifica el tiempo de espera del depurador, que es el período máximo de tiempo durante el que el depurador espera una respuesta de la VM destino después de efectuar una petición a esa VM. Las conexiones lentas pueden requerir que se aumente este valor. El valor de tiempo de espera puede editarse desde la página de preferencias Java > Depurar. El cambio del valor de tiempo de espera solamente afecta a las VM que se inician posteriormente, no a las VM que ya están en ejecución.

2.7 Actualizar valores inspeccionados

Al inspeccionar el resultado de una expresión evaluada en el depurador, es importante tener en cuenta que el resultado visualizado es el que corresponde a esa expresión en el momento de efectuar la evaluación. Por ejemplo, al inspeccionar un contador de enteros simples (tipo de datos primitivo), el valor visualizado en la vista Expresiones es el valor correspondiente al momento en que se evaluó la expresión. A medida que el contador cambia en el programa en ejecución, el resultado de la inspección no cambiará (dado que la vista no está visualizando el valor asociado a una variable, sino que está visualizando el valor de una expresión, y el valor de un tipo de datos primitivo no puede cambiar). Sin embargo, si una expresión da como resultado un objeto, los campos de ese objeto se actualizarán en el inspector a medida que cambien en el programa en ejecución (ya que el valor asociado a los campos de un objeto puede cambiar).

2.8 Recorrer principal en métodos nativos que realizan E/S

Cuando el depurador recorre principal en métodos nativos que realizan entradas/salidas en System.out o System.err, es posible que la salida no aparezca de inmediato a menos que el método nativo realice una acción de vaciado en el almacenamiento intermedio de salida.

2.9 Buscar referencias de campos de constantes

La búsqueda no busca referencias a campos de constantes que estén dentro de binarios, ya que la especificación de lenguaje Java ordena que los valores de campos de constantes estén incorporados en los bytecodes del archivo de clase, sin dejar rastro de una referencia de campo

2.10 Unidades de compilación Java fuera de la vía de acceso de clases de construcción

Cuando una unidad de compilación con problemas de compilación se traslada fuera de la vía de acceso de clases de construcción Java, la unidad conservará los problemas Java para siempre (la lista de problemas de compilación no se renueva porque nunca se volverá a compilar). La acción de redenominar un archivo *.java como uno con otro sufijo de extensión de archivo provocará el mismo problema. 

2.11 Acciones para modificar archivos solo de lectura

Las acciones del menú Fuente (por ejemplo, Generar métodos de obtención y establecimiento) siempre se inhabilitan cuando el archivo es solo de lectura. Actualmente esto se cumple incluso cuando el suministrador de depósito soporta la reserva automática de archivos al producirse modificaciones.

2.12 Plantillas de código Java

No puede utilizar ${CURSOR} dentro de un comentario en una plantilla de código Java (Ventana > Preferencias > Java > Plantillas). 

2.13 Organizar importación e importaciones desde paquetes por omisión

Organizar importación no maneja las importaciones desde paquetes por omisión. Tenga en cuenta que la importación desde un paquete por omisión ya no está soportada en JDK 1.4. 

2.14 Acción Añadir Javadoc para campos

La acción Añadir Javadoc no funciona para los campos.

2.15 Ayuda flotante de Javadoc en el editor Java

La ayuda flotante de Javadoc que se muestra cuando se pasa el puntero del ratón por encima de los identificadores en el editor Java no maneja correctamente los enlaces dentro de los comentarios de Javadoc. 

2.16  Se visualiza el código HTML > en la clase Java nueva, en lugar de >

Cuando crea una clase Java nueva, los comentarios generados indican:

Para cambiar la plantilla de este archivo generado, vaya a Ventana > Preferencias > Java > Generación de código > Código y comentarios.

En lugar de utilizarse el signo mayor que (>), se utiliza el código HTML que representa dicho signo. El comentario debe indicar:

Para cambiar la plantilla de este archivo generado, vaya a Ventana > Preferencias > Java > Generación de código > Código y comentarios.

2.17 Problema al abrir el editor de archivos de clase

Si la preferencia "Utilizar contenedores de vía de acceso de clases" se ha habilitado en la página de preferencias de Desarrollo de conectores > Control de vía de construcción Java, tal vez no pueda abrir un editor de archivos de clase para un archivo de clase contenido en un JAR del contenedor "Entradas de conectores necesarios". Una manera de salir al paso del problema consiste en expandir el archivo de clase en el Explorador de paquetes; así se visualiza la estructura del archivo de clase igual que lo haría el editor. Si el zip del código fuente está disponible para el JAR, otra posibilidad consiste en conectar el fuente al archivo JAR.

Para conectar el fuente a un JAR en el contenedor "Entradas de conectores necesarios", siga estos pasos:

  1. En el Explorador de paquetes, seleccione el proyecto y abra Proyecto > Propiedades en el menú contextual.
  2. Seleccione la página Vía de construcción Java.
  3. Vaya a la página Bibliotecas.
  4. Expanda el elemento "Entradas de conectores necesarios".
  5. Expanda el elemento del JAR.
  6. Seleccione Conexión de fuente y pulse Editar.
  7. Entre la ubicación del zip fuente correspondiente.
  8. Pulse Aceptar para indicar que está de acuerdo.

2.18 No se puede ejecutar ni depurar una clase en un proyecto cuyo nombre tenga caracteres GB18030

La mayoría de las bibliotecas de clases no soportan debidamente la creación de un proceso del sistema (por medio de java.lang.Runtime.exec(...)) cuando la línea de mandatos especificada contiene caracteres GB18030. Esta limitación implica que el depurador no puede lanzar aplicaciones cuando la línea de mandatos que genera contiene caracteres GB18030.

2.19 No se pueden depurar desbordamientos de pila

Si una sesión de depuración queda suspendida al producirse una excepción java.lang.StackOverflowError (debido a un punto de interrupción de excepción), el depurador tal vez no pueda recuperar información de depuración a partir de la JVM destino. Asimismo, el depurador tal vez no pueda interaccionar de manera fiable con la JVM destino después de este punto.

2.20 Limitación de la evaluación

El depurador utiliza las hebras de la JVM destino para realizar evaluaciones (ya sea las evaluaciones explícitas solicitadas por el usuario o las implícitas, como cuando se invoca toString() en la vista Variables). La interfaz de depuración Java (JDI) exige que la hebra en la que se lleve a cabo una evaluación se haya suspendido a causa de un evento de usuario (es decir, por un punto de interrupción o por una petición de recorrer). No se pueden realizar evaluaciones en las hebras que se hayan suspendido mediante la acción de suspender. Asimismo, cuando se ha configurado un punto de interrupción para que suspenda la JVM, en lugar de suspender tan solo la hebra individual, las hebras que no encontraron el punto de interrupción no están en un estado válido para realizar una evaluación. Cuando se intenta una evaluación en una hebra cuyo estado no sea válido para llevar a cabo evaluaciones, aparecerá un mensaje de error que indica "Para invocar un método, hay que suspender la hebra con un mandato de recorrer o con un punto de interrupción".

2.21 Puntos de interrupción fuera de la vía de acceso de clases de construcción

Los puntos de interrupción solo se pueden crear en los elementos Java contenidos en la vía de acceso de clases de construcción de un proyecto. El depurador Java suprime automáticamente los puntos de interrupción si el elemento Java asociado se elimina de la vía de construcción de un proyecto. Sin embargo, si el conector de depuración Java no está cargado cuando se cambia una vía de construcción, dichos puntos de interrupción permanecerán en el área de trabajo y podrán provocar errores cuando el usuario intente ir al archivo asociado al punto de interrupción, desde la vista Puntos de interrupción.

2.22 Arreglo rápido e importaciones desde paquetes por omisión

La función Arreglo rápido no maneja las importaciones desde paquetes por omisión. Tenga en cuenta que la importación desde un paquete por omisión ya no está soportada en JDK 1.4.

2.23 Las acciones de cortar, copiar y pegar no funcionan para los recursos enlazados en las vistas que muestran elementos Java

Las acciones de cortar, copiar y pegar no funcionan para los archivos y carpetas enlazados que aparecen en las vistas que muestran elementos Java, incluido el Explorador de paquetes. Una manera de salir al paso de este problema consiste en utilizar estas acciones desde la vista Navegador.

2.24 Los conjuntos de trabajo Java no funcionan correctamente para los elementos del contenedor de la biblioteca JRE del sistema

Si se aplica un conjunto de trabajo que conste solamente de elementos del contenedor de la biblioteca JRE del sistema como filtro de la vista de paquetes, podría obtenerse un Explorador de paquetes vacío.

2.25 No se puede generar Javadoc para los paquetes en cuyo nombre haya caracteres GB18030

La mayoría de las bibliotecas de clases no soportan debidamente la creación de un proceso del sistema (por medio de java.lang.Runtime.exec(...)) cuando la línea de mandatos especificada contiene caracteres GB18030. Dado que el Javadoc se crea mediante el ejecutable de Javadoc proporcionado con el JDK, no se podrá generar Javadoc si hay caracteres GB18030 en el nombre del paquete o de la clase.

2.26 La edición enlazada no funciona correctamente en la modalidad de sobrescritura

La edición enlazada sirve para redenominar elementos dentro de una sola unidad de compilación y para plantillas que tengan múltiples apariciones de la misma variable de la plantilla. La edición enlazada no funciona correctamente en la modalidad de sobrescritura.

2.27 La plantilla de generación de código del bloque catch debe acabar con un carácter de nueva línea si la última línea es un comentario

Si la última línea de la plantilla de generación de código del bloque catch es un comentario de línea, la línea debe acabar con un carácter de nueva línea. De lo contrario, la llave de cierre acabaría en la línea de comentario y provocaría un error de compilación.

Volver al archivo readme principal

>