Outils de développement Java (JDT) - Notes d'édition

1.0 Introduction
2.0 Problèmes et restrictions connus
   2.1 Exécution de programmes Java comportant des caractères autres que des caractères Latin-1 dans les noms de classe ou de package
   2.2 Attributs de débogage manquants
    2.3 Définition de points d'arrêt
   2.4 Utilisation du remplacement à chaud
   2.5 Testeur de code
   2.6 Débogage sur connexions lentes
   2.7 Mise à jour des valeurs contrôlées
   2.8 Ignorer les méthodes natives effectuant des E/S
   2.9 Recherche des références de zone constante
   2.10 Unités de compilation Java hors du chemin d'accès aux classes de compilation
   2.11 Arrêt d'une machine virtuelle et d'un processus en cours sur une machine virtuelle Java IBM 1.3 sous Linux 
   2.12 Actions permettant de modifier des fichiers en lecture seule
   2.13 Modèles de code Java
   2.14 Organisation des importations et importations depuis des packages par défaut
    2.15 Ajout d'actions Javadoc à des zones
   2.16 Aide contextuelle Javadoc dans l'éditeur Java
   2.17 Affichage du code HTML > dans une nouvelle classe Java au lieu de >
    2.18 Impossible d'exécuter ou de déboguer une classe dans un projet dont le nom contient des caractères GB18030
    2.19 Impossible de déboguer les dépassements de pile
    2.20 Restrictions relatives à l'évaluation   
    2.21 Points d'arrêt hors du chemin d'accès aux classes de compilation  
    2.22 Fonction Quick fix et importations depuis des packages par défaut   
    2.23 Actions Couper, Copier, Coller impossibles pour des ressources liées dans des vues contenant des éléments Java
    2.24 Dysfonctionnement des parties actives Java pour les éléments du conteneur de la bibliothèque du système JRE   
    2.25 Impossible de générer Javadoc pour des packages dont le nom contient des caractères GB18030
    2.26 Dysfonctionnement de l'édition liée en mode remplacement
    2.27 Le modèle de génération de code de bloc catch doit se terminer par une nouvelle ligne si la dernière ligne est un commentaire de ligne
    2.28 Impossible d'ouvrir l'éditeur de fichier de classe

1.0 Introduction

Cette section contient des informations sur les incidents et les restrictions recensés dans les outils de développement Java.

2.0 Problèmes et restrictions connus

2.1 Exécution de programmes Java comportant des caractères autres que des caractères Latin-1 dans les noms de classe ou de package

Une erreur java.lang.NoClassDefFoundError peut être générée lors de l'exécution de programmes Java comportant des caractères autres que des caractères Latin dans les noms de package ou de classe. Pour y remédier, regroupez les fichiers de classe dans un fichier JAR et exécutez le programme depuis ce fichier JAR au lieu de l'exécuter directement depuis le système de fichiers.

2.2 Attributs de débogage manquants

Le programme de débogage requiert des attributs de débogage dans la compilation des fichiers de classe pour pouvoir afficher les numéros de ligne et les variables locales. Assez souvent, les bibliothèques de classes (par exemple, rt.jar) sont compilées sans la totalité des attributs de débogage et les variables locales et arguments de méthode de ces classes ne sont donc pas visibles dans le programme de débogage.

2.3 Définition de points d'arrêt

En général, le programme de débogage ne permet pas de placer des points d'arrêt sur des lignes de code non exécutables (commentaires, lignes vides, etc.). Il existe toutefois certains cas où le programme de débogage autorise les points d'arrêt sur des lignes de code non exécutables. Par exemple, le programme de débogage autorise les points d'arrêt sur les déclarations de variable qui ne contiennent pas d'initialiseur. Les points d'arrêt activés, correctement installés sur une ligne exécutable d'un système VM en cours d'exécution (débogable) sont affichés avec une coche. Les points d'arrêt affichés sans coche ne sont pas installés dans un système VM en cours d'exécution (débogable).

2.4 Utilisation du remplacement à chaud

Le remplacement de code à chaud est pris en charge sur les machines VM JDK 1.4.x et IBM J9. Il se limite aux modifications qui n'affectent pas la forme d'une classe. La modification des méthodes existantes est donc prise en charge, mais l'ajout ou la suppression de membres ne l'est pas.

Le remplacement du code à chaud et l'avance pas à pas sur les machines VM JDK 1.4.0 ne sont pas fiables. 

2.5 Testeur de code

L'ajout d'un point d'arrêt dans une page de testeur de code n'est pas pris en charge.

Lorsqu'un code qui appelle directement ou indirectement System.exit(int) est exécuté dans le testeur de code, l'évaluation ne peut pas être terminée et une trace de pile d'exception com.sun.jdi.VMDisconnectedException est affichée dans l'éditeur du testeur de code.

L'arrêt d'une page du testeur de code alors que ce dernier procède à une évaluation génère une exception com.sun.jdi.VMDisconnectedException qui est affichée dans l'éditeur du testeur de code.

2.6 Débogage sur connexions lentes

Une préférence globale de débogage Java spécifie le délai d'expiration du programme de débogage, qui correspond au délai maximal pendant lequel ce programme attend une réponse du système VM cible après la soumission d'une demande à ce système. Pour les connexions lentes, il peut être nécessaire d'augmenter cette valeur. Elle peut être modifiée dans la page de préférences Java > Débogage. La modification du délai d'expiration n'affecte que les systèmes VM lancés ultérieurement et non ceux en cours d'exécution.

2.7 Mise à jour des valeurs contrôlées

Lorsque vous contrôlez le résultat d'une expression évaluée dans le programme de débogage, n'oubliez pas que le résultat affiché est le résultat de cette expression au moment de son évaluation. Par exemple, lorsque vous contrôlez un simple compteur d'entiers (type de données primitives), la valeur affichée dans la vue Expressions correspond à la valeur en cours lors de l'évaluation de l'expression. A mesure que la valeur du compteur change dans le programme en cours d'exécution, le résultat n'est pas modifié (la vue n'affichant pas la valeur associée à une variable ; il affiche la valeur d'une expression et la valeur d'un type de données primitives ne peut pas être modifiée). Toutefois, si le résultat d'une expression est un objet, les zones de cet objet sont mises à jour dans le contrôleur car elles sont modifiées dans le programme d'exécution (la valeur associée aux zones d'un objet pouvant être modifiée).

2.8 Ignorer les méthodes natives effectuant des E/S

Lorsque le programme de débogage ignore des méthodes natives effectuant des E/S sur System.out ou System.err, la sortie risque de ne pas être affichée immédiatement, sauf si la méthode native procède à un vidage de la mémoire tampon des sorties.

2.9 Recherche des références de zone constante

Le système de recherche ne trouve pas de références à des zones constantes dans les programmes en binaire car la spécification du langage Java requiert que les valeurs des zones constantes soient en ligne dans les codes octet du fichier de classes, ce qui ne laisse aucune trace de référence à une ligne.

2.10 Unités de compilation Java hors du chemin d'accès aux classes de compilation

Si une unité de compilation comportant des erreurs de compilation est déplacée hors du chemin d'accès aux classes de compilation Java, elle conserve ses erreurs Java définitivement (la liste de ses erreurs de compilation n'est pas régénérée car elle ne sera plus compilée). La même erreur survient si l'extension d'un fichier *.java est modifiée. 

2.11 Arrêt d'une machine virtuelle et d'un processus en cours sur une machine virtuelle Java IBM 1.3 sous Linux 

L'arrêt d'une cible de lancement, d'une cible de débogage ou d'un processus système associé à une cible de débogage active sur la machine virtuelle Java IBM 1.3 JVM sous Linux est impossible si la cible de débogage comporte une unité d'exécution suspendue. Pour supprimer une telle cible de débogage de l'interface utilisateur de débogage, sélectionnez les options d'arrêt et de suppression du menu en incrustation de la vue de débogage (ou utilisez la touche de raccourci de suppression). Les processus système associés au système d'exploitation ne sont peut-être pas correctement rafraîchis. Si une cible de débogage ne comporte pas d'unités d'exécution suspendues, l'arrêt a lieu correctement.

2.12 Actions permettant de modifier des fichiers en lecture seule

Les actions du menu Source (par exemple, Générer des méthodes Getter et Setter) sont toujours désactivées lorsque le fichier est en lecture seule. Cela reste vrai, même si le fournisseur du référentiel prend automatiquement en charge la réservation des fichiers lors de leur modification.

2.13 Modèles de code Java

Vous ne pouvez pas utiliser ${CURSOR} dans un commentaire de modèle de code Java (Fenêtre > Préférences > Java > Modèles). 

2.14 Organisation des importations et importations depuis des packages par défaut

La fonction d'organisation des importations ne traite pas correctement les packages par défaut. Les importations depuis un package par défaut ne sont plus prises en charge dans JDK 1.4. 

2.15 Ajout d'actions Javadoc à des zones

L'action Ajout de Javadoc ne fonctionne pas pour les zones.

2.16 Aide contextuelle Javadoc dans l'éditeur Java

L'aide contextuelle Javadoc affichée lorsque la souris passe au dessus des identifiants, dans l'éditeur Java, ne traite pas correctement les liens situés dans les commentaires Javadoc. 

2. 17  Affichage du code HTML > dans une nouvelle classe Java au lieu de >

Lorsque vous créez une classe Java, les commentaires suivants sont générés :

To change the template for this generated file go to Windows > Preferences > Java > Code Generation > Code and Comments.

Le code HTML du signe > est utilisé à la place du signe en question. Le commentaire devrait se présenter ainsi :

To change the template for this generated file go to Windows > Preferences > Java > Code Generation > Code and Comments.

2.18 Impossible d'exécuter ou de déboguer une classe dans un projet dont le nom contient des caractères GB18030

La plupart des bibliothèques de classes ne prennent pas correctement en charge la création d'un processus système (via java.lang.Runtime.exec(...)) si la ligne de commande spécifiée contient des caractères GB18030. Cela signifie que le débogueur ne peut pas lancer d'applications si la ligne de commande générée contient des caractères GB18030.

2.19 Impossible de déboguer les dépassements de pile

Si une session de débogage est suspendue avec une exception java.lang.StackOverflowError (en raison d'un point d'arrêt d'exception), le débogueur risque de ne pas pouvoir extraire d'informations de débogage de la machine virtuelle Java cible. En outre, il risque de ne plus pouvoir interagir de façon fiable avec la machine virtuelle Java.

2.20 Restrictions relatives à l'évaluation

Le débogueur utilise des unités d'exécution dans la machine virtuelle Java cible pour effectuer des évaluations (évaluations explicites demandées par l'utilisateur et évaluations implicites telles que des commandes d'appel toString() dans la vue Variables). L'interface de débogage Java (JDI) nécessite la suspension par un événement utilisateur de l'unité d'exécution dans laquelle une évaluation a lieu (c'est-à-dire, un point d'arrêt ou une demande d'avance). Les évaluations ne peuvent pas avoir lieu sur des unités d'exécution suspendues à l'aide de l'action de suspension. De même, lorsqu'un point d'arrêt est configuré pour suspendre la machine virtuelle Java plutôt que l'unité d'exécution uniquement, les unités d'exécution non concernées par le point d'arrêt ne peuvent pas faire l'objet d'une évaluation. Lorsqu'une évaluation est tentée sur une telle unité d'exécution, un message d'erreur apparaît indiquant que "l'unité d'exécution doit être suspendue par une demande d'avance ou un point d'arrêt pour que l'appel de la méthode soit possible".

2.21 Points d'arrêt hors du chemin d'accès aux classes de compilation

Les points d'arrêt ne peuvent être créés que sur des éléments Java présents dans le chemin d'accès aux classes de compilation d'un projet. Le débogueur Java supprime automatiquement les points d'arrêt si l'élément Java associé est supprimé du chemin de compilation d'un projet. Toutefois, si le plug-in de débogage Java n'est pas chargé lors de la modification d'un chemin de compilation, ces points d'arrêt restent dans l'espace de travail et peuvent entraîner des incidents lorsque l'utilisateur essaye d'accéder au fichier associé au point d'arrêt depuis la vue Points d'arrêt.

2.22 Fonction Quick fix et importations depuis des packages par défaut

La fonction Quick fix ne gère pas les importations depuis des packages par défaut. Les importations depuis un package par défaut ne sont plus prises en charge dans JDK 1.4.

2.23 Les actions Couper, Copier et Coller sont impossibles pour des ressources liées dans des vues contenant des éléments Java

Les actions Couper, Copier et Coller sont impossibles pour des fichiers et des dossiers liés apparaissant dans des vues contenant des éléments Java, notamment l'explorateur de package (Package Explorer). La solution consiste à utiliser ces actions depuis la vue Navigateur.

2.24 Dysfonctionnement des parties actives Java pour les éléments du conteneur de la bibliothèque du système JRE

L'application d'une partie active entièrement composée d'éléments provenant du conteneur de la bibliothèque du système JRE comme filtre de la vue des packages peut entraîner l'affichage d'un explorateur de packages vide (Package Explorer).

2.25 Impossible de générer Javadoc pour des packages dont le nom contient des caractères GB18030

La plupart des bibliothèques de classes ne prennent pas correctement en charge la création d'un processus système (via java.lang.Runtime.exec(...)) si la ligne de commande spécifiée contient des caractères GB18030. Javadoc étant créé à l'aide de l'exécutable Javadoc fourni avec le kit JDK, sa génération échoue si le nom de package ou de classe contient des caractères GB18030.

2.26 Dysfonctionnement de l'édition liée en mode remplacement

L'édition liée est utilisée pour renommer des éléments au sein d'une seule unité de compilation et pour des modèles comportant plusieurs occurrences de la même variable de modèle. L'édition liée ne fonctionne pas correctement en mode remplacement.

2.27 Le modèle de génération de code de bloc catch doit se terminer par une nouvelle ligne si la dernière ligne est un commentaire de ligne

Si la dernière ligne du modèle de génération de code de bloc catch est un commentaire de ligne, la ligne doit se terminer par un saut de ligne. Sinon, la ligne se termine par l'accolade fermante, ce qui entraîne une erreur de compilation.

2.28 Impossible d'ouvrir l'éditeur de fichier de classe

Si la préférence "Utiliser des conteneurs de chemin de classe" est activée sur la page de préférences Développement de plug-in > Contrôle du chemin de compilation Java, vous risquez de ne pas pouvoir ouvrir l'éditeur de fichier de classe pour un fichier de classe compris dans un JAR du conteneur "Entrées de plug-in requises". Pour résoudre ce problème, développez le fichier de classe dans l'explorateur de packages (Packages Explorer), la structure du fichier de classe s'affiche alors comme dans l'éditeur. Si un zip de code source est disponible pour le JAR, vous pouvez également lier la source au fichier JAR.

Pour lier la source à un fichier JAR dans le conteneur "Entrées de plug-in requises", suivez les étapes ci-dessous :

  1. Dans l'explorateur Package Explorer, sélectionnez le projet et ouvrez Projet > Propriétés dans le menu contextuel
  2. Sélectionnez la page Chemin de compilation Java
  3. Accédez à la page Bibliothèques
  4. Développez l'élément "Entrées de plug-in requises"
  5. Développez l'élément pour le JAR
  6. Sélectionnez Connexion de la source et cliquez sur Editer.
  7. Indiquez l'emplacement du zip de la source correspondante.
  8. Cliquez sur OK pour valider.

Retour au fichier Readme principal

>