Outils de développement Java (JDT) - Notes sur l'é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 VM et fin de processus lors de l'exécution d'IBM 1.3 JVM sous Linux 
    2.12 Actions permettant de modifier les fichiers en lecture seule
    2.13 Modèles de code Java
    2.14 Organisation des importations et des importations à partir des packages par défaut
    2.15 Ajout d'actions Javadoc à des zones
    2.16 Aide contextuelle Javadoc dans l'éditeur Java
    2.17 Code HTML > affiché dans la nouvelle classe Java à la place de >
    2.18 Impossibilité d'exécuter ou de déboguer la classe dans un projet comportant des caractères GB18030 dans le nom du projet
    2.19 Impossibilité de déboguer les dépassements de pile
    2.20 Restriction des évaluations   
    2.21 Points d'arrêt hors du chemin d'accès aux classes de compilation   
    2.22 Correctif rapide et importations à partir des packages par défaut   
    2.23 Les opérations Couper, Copier et coller ne fonctionnent pas pour les ressources liées dans les vues affichant des éléments Java
    2.24 Les jeux de documents Java ne fonctionnent pas correctement pour les éléments provenant du conteneur de bibliothèques du système JRE   
    2.25 Impossibilité de générer Javadoc pour les packages comportant des caractères GB18030 dans le nom
    2.26 L'édition liée ne fonctionne pas correctement en mode remplacement
    2.27 Le modèle de génération du code de bloc catch doit se terminer par une nouvelle ligne si la dernière ligne est une ligne de commentaire
    2.28 Problème lors de l'ouverture de la classe dans l'éditeur de fichiers

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 cases à cocher correspondant aux points d'arrêt activés correctement installés sur une ligne exécutable d'un système JVM en cours d'exécution (débogable) sont sélectionnées. 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 VM et fin de processus lors de l'exécution d'IBM 1.3 JVM sous Linux 

L'exécution d'un lancement, d'une cible de débogage ou d'un processus système associé à une cible de débogage en cours d'exécution dans la JVM IBM 1.3 sur la plateforme Linux n'aboutit pas lorsque la cible de débogage associée comporte une unité d'exécution interrompue. Pour supprimer de telles cibles de débogage de l'interface utilisation de débogage, sélectionnez Arrêter et terminer dans le menu contextuel de la vue de débogage (ou utilisez la touche "suppr"). Les processus système associés dans le système d'exploitation peuvent ne pas être correctement nettoyés. Si une cible de débogage ne comporte aucune unité d'exécution interrompue, l'arrêt s'effectue correctement.

2.12 Actions permettant de modifier les 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 des importations à partir 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 Code HTML > affichée dans la nouvelle classe à la place de >

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

Pour changer le modèle de ce fichier généré, allez à : Fenêtres > Préférences > Java > Génération de code > Code et commentaires.

Le code HTML correspondant au signe supérieur à (>) est utilisé à la place du signe lui-même. Le commentaire doit indiquer :

Pour changer le modèle de ce fichier généré, allez à : Fenêtres > Préférences > Java > Génération de code > Code et commentaires

2.18 Impossibilité d'exécuter ou de déboguer la classe dans un projet comportant des caractères GB18030 dans le nom du projet

La plupart des bibliothèques de classes ne prennent pas correctement en charge la création d'un processus Java (via java.lang.Runtime.exec(...)) lorsque la ligne de commande indiquée contient des caractères GB18030. Cette restriction signifie que le débogueur ne peut pas lancer les applications lorsque la ligne de commande générée contient des caractères GB18030.

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

Si une session de débogage s'arrête au niveau d'une exception java.lang.StackOverflowError (provoquée par un point d'arrêt d'exception), le débogueur peut ne pas être mesure d'extraire les informations de débogage de la machine JVM cible. De la même manière, le débogueur peut ne pas être en mesure d'entrer en interaction de manière fiable avec la machine JVM une fois cette étape passée.

2.20 Restriction des évaluations

Le débogueur utilise des unités d'exécution dans la machine JVM cible pour effectuer des évaluations (à la fois des évaluations explicites demandées par l'utilisateur et des évaluations implicites, telles que les appels toString() dans la vue Variables). L'interface JDI (Java Debug Interfac) requiert que l'unité d'exécution dans laquelle l'évaluation est effectuée soit interrompue par un événement utilisation (c'est-à-dire, une demande d'avance ou de point d'arrêt). Les évaluations ne peuvent être effectuée pour des unités d'exécution interrompues par l'action suspend. De la même manière, lorsqu'un point d'arrêt est configuré pour interrompre la machine JVM et non uniquement une seule unité d'exécution, l'état des unités d'exécution qui n'ont pas rencontré le point d'arrêt ne leur permet pas d'effectuer une évaluation. Lorsqu'une évaluation est tentée dans une unité d'évaluation dont l'état ne permet pas cette action, un message d'erreur s'affiche indiquant "L'unité d'exécution doit être interrompue par une progression ou un point d'arrêt pour pouvoir appeler une méthode".

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 qui sont contenus 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 d'accès aux classes de compilation d'un projet. Toutefois, si le plug-in de débogage Java n'est pas chargé lorsqu'un chemin d'accès aux classes de compilation est modifié, de tels points d'arrêt restent dans l'espace de travail et peuvent provoquer des erreurs lorsque l'utilisateur tente d'accéder au fichier associé au point d'arrêt à partir de la vue Points d'arrêt.

2.22 Correctif rapide et importations à partir des packages par défaut

Le correctif rapide ne traite pas correctement les importations à partir de 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 opérations Couper, Copier et coller ne fonctionnent pas pour les ressources liées dans les vues affichant des éléments Java

Les opérations Couper, Copier et Coller ne fonctionnent pas pour les dossiers et les fichiers liés apparaissant dans des vues comportant des éléments Java, notamment la vue Package. Pour éviter ce problème, il suffit de sélectionner ces options à partir de la vue du navigateur.

2.24 Les jeux de documents Java ne fonctionnent pas correctement pour les éléments provenant du conteneur de bibliothèques du système JRE

L'application d'un jeu de documents comportant uniquement des éléments du conteneur de bibliothèques du système JRE en tant que filtre de la vue des packages peut être à l'origine d'une vue Package vide.

2.25 Impossibilité de générer Javadoc pour les packages comportant des caractères GB18030 dans le nom

La plupart des bibliothèques de classes ne prennent pas correctement en charge la création d'un processus Java (via java.lang.Runtime.exec(...)) lorsque la ligne de commande indiquée contient des caractères GB18030. Etant donné que Javadoc est créé à l'aide de l'exécutable Javadoc fourni avec le kit JDK, la génération de Javadoc n'aboutit pas si le package ou le nom de classe contient des caractères GB18030.

2.26 L'édition liée ne fonctionne pas correctement en mode remplacement

L'édition liée permet de renommer des éléments dans une seule unité de compilation. Elle est également utilisée pour les 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 du code de bloc catch doit se terminer par une nouvelle ligne si la dernière ligne est une ligne de commentaire

Si la dernière ligne du modèle de génération de code de bloc catch est une ligne de commentaire, alors cette ligne doit être suivie d'une nouvelle ligne. Sinon, l'accolade fermante se trouve au niveau de la ligne de commentaire, ce qui provoque une erreur de compilation.

2.28 Problème lors de l'ouverture de la classe dans l'éditeur de fichiers

Si la préférence permettant d'utiliser les conteneurs de chemins d'accès aux classes a été activée dans la page de préférences Développement de plug-in > Contrôle du chemin de compilation Java, il peut être possible que vous ne puissiez pas ouvrir d'éditeur de fichiers de classe pour un fichier de classe contenu dans un élément JAR dans le conteneur "Entrées de plug-in requises". Une façon d'éviter ce problème consiste à développer le fichier de classe dans la vue Package. Ainsi, vous affichez la structure du fichier de classe de la même manière que le ferait l'éditeur. Si un fichier zip du code source est disponible pour le fichier JAR, vous pouvez également associer la source au fichier JAR.

Pour effectuer cette action dans le conteneur "Entrées de plug-in requises", suivez la procédure ci-après.

  1. Dans la vue Package, choisissez le projet et sélectionnez 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 "Entées de plug-in requises"
  5. Développez l'élément de fichier JAR
  6. Sélectionnez Connexion de la source et cliquez sur Editer.
  7. Entrez l'emplacement du fichier zip source correspondant.
  8. Cliquez sur OK pour valider.

Retour au fichier Readme principal

>