JDT (Java Development Tools) - note di rilascio

1.0 Introduzione
2.0 Problemi noti e limitazioni
    2.1 Esecuzione di programmi Java con caratteri non-Latin-1 nel pacchetto o nei nomi di classe
    2.2 Mancanza di attributi di debug
    2.3 Impostazione dei punti di interruzione
    2.4 Sostituzione codice attivo
    2.5 Bozza
    2.6 Debug sulle connessioni lente
    2.7 Aggiornamento dei valori verificati
    2.8 Ignorare i metodi nativi che eseguono I/O
    2.9 Ricerca di riferimenti di campo costante
    2.10 Unità di compilazione Java esterne al percorso classi di generazione
   2.11 Azioni per modificare i file di sola lettura
    2.12 Modelli con codice Java
   2.13 Organizzazione importazioni dai pacchetti predefiniti
   2.14 Opzione Aggiungi Javadoc per i campi
   2.15 Descrizione a comparsa Javadoc nell'editor Java
   2.16 Codice HTML > visualizzato nelle nuove classi Java invece di >
    2.17 Problemi nell'apertura dell'editor dei file di classe
    2.18 Impossibile eseguire o sottoporre a debug le classi di un progetto il cui nome contenga i caratteri GB18030
    2.19 Impossibile sottoporre a debug gli overflow dello stack
    2.20 Limitazioni di valutazione   
    2.21 Punti di interruzione esterni al percorso classi di generazione  
    2.22 Correzioni rapide ed importazioni dai pacchetti predefiniti   
    2.23 Operazioni di taglia, copia e incolla non funzionanti per le risorse collegate nelle viste che contengono elementi Java
    2.24 Insiemi di lavoro Java non funzionanti per gli elementi del contenitore delle librerie di sistema JRE   
    2.25 Impossibile generare Javadoc per pacchetti i cui nomi contengono i caratteri GB18030
    2.26 Editazione collegata non funzionante in modalità di sovrascrittura
    2.27 Il modello di generazione del codice per il blocco catch deve terminare con un carattere di fine riga se l'ultima riga è un commento

1.0 Introduzione

Questa sezione fornisce informazioni sui problemi noti e le limitazioni relative agli strumenti di sviluppo Java.

2.0 Problemi noti e limitazioni

2.1 Esecuzione di programmi Java con caratteri non-Latin-1 nel pacchetto o nei nomi di classe

Viene visualizzato un errore java.lang.NoClassDefFoundError se si eseguono programmi Java con caratteri non-Latin nel pacchetto o nei nomi di classe. La soluzione consiste nell'assemblare i file di classe come file JAR ed eseguire il programma al di fuori del file JAR e non direttamente dal file system. 

2.2 Mancanza di attributi di debug

Il debugger richiede che i file delle classi siano compilati con gli attributi di debug per visualizzare i numeri di riga e le variabili locali. Molto spesso, le librerie di classi (ad esempio, rt.jar) vengono compilate senza attributi di debug completi, di conseguenza le variabili locali e gli argomenti di metodo di tali classi non sono visibili nel debugger.

2.3 Impostazione dei punti di interruzione

In generale, il debugger non consente di inserire punti di interruzione nelle righe di codice che non sono eseguibili (commenti, righe vuote e così via). Tuttavia, esistono dei casi in cui il debugger consente i punti di interruzione nelle righe di codice che non sono eseguibili. Il debugger, ad esempio, consente l'inserimento di un punto di interruzione in una dichiarazione di variabile che non contiene un inizializzatore. Notare che i punti di interruzione attivati e correttamente inseriti in una riga eseguibile di una VM in esecuzione (che può essere sottoposta a debug) vengono visualizzati con un segno di spunta. I punti di interruzione visualizzati senza un segno di spunta non sono inseriti in una VM in esecuzione (che può essere sottoposta a debug).

2.4 Sostituzione codice attivo

La funzione Sostituzione codice attivo è supportata sulle macchine VM JDK 1.4.x e IBMR J9. Tale funzione è limitata alle modifiche che non influiscono sul formato di una classe. Pertanto, sono supportate le modifiche all'interno di metodi esistenti, ma non è supportata l'aggiunta o l'eliminazione dei membri.

La funzione Sostituzione codice attivo sulle macchine VM JDK 1.4.0 non è affidabile. 

2.5 Bozza

Non è supportata l'impostazione di un punto di interruzione in una pagina di bozza.

Quando un codice, che richiama in modo diretto o indiretto System.exit(int), viene eseguito nella bozza, la valutazione non verrà completata e comporterà la visualizzazione nell'editor di bozza di una traccia nello stack per un oggetto com.sun.jdi.VMDisconnectedException.

La chiusura di una pagina di bozza mentre si sta eseguendo una valutazione comporterà la visualizzazione di un oggetto com.sun.jdi.VMDisconnectedException nell'editor di bozza.

2.6 Debug sulle connessioni lente

Ogni preferenza di debug Java specifica il timeout del debugger, ovvero l'intervallo massimo di tempo in base al quale il debugger attende una risposta da una VM di destinazione dopo aver inoltrato una richiesta a tale VM. Le connessioni lente possono richiedere un incremento di questo valore. Il valore di timeout può essere modificato dalla pagina delle preferenze Java > Debug . La modifica del valore di timeout ha effetto soltanto sugli avvii successivi, non sulle VM attualmente in esecuzione.

2.7 Aggiornamento dei valori verificati

Quando si esamina il risultato di un'espressione valutata nel debugger, è importante notare che il risultato visualizzato sia il risultato di tale espressione nel momento in cui è stata valutata. Quando si esamina, ad esempio, un semplice contatore di valori integer (tipo di dati primitivi), il valore visualizzato nella vista Espressioni è il valore dell'espressione nel momento in cui è stata valutata. Quando il contatore viene modificato nel programma in esecuzione, il risultato esaminato non varierà (perché la vista non visualizza il valore associato alla variabile, ma il valore di un'espressione e il valore di un tipo di dati primitivi non può variare). Tuttavia, se un'espressione dà per risultato un oggetto, i campi di tale oggetto verranno aggiornati nell'inspector quando verranno modificati nel programma in esecuzione (perché il valore associato ai campi di un oggetto può variare).

2.8 Ignorare i metodi nativi che eseguono I/O

Quando il debugger ignora i metodi nativi che eseguono l'I/O su System.out o System.err, è possibile che l'output non venga visualizzato immediatamente a meno che il metodo nativo non esegua uno svuotamento del buffer di output.

2.9 Ricerca di riferimenti di campo costante

La ricerca non trova i riferimenti ai campi costanti all'interno dei file binari, perché la specifica del linguaggio Java richiede che i valori dei campi costanti vengano compilati nei bytecode del file di classe, senza conservare alcuna traccia dei riferimenti al campo.

2.10 Unità di compilazione Java esterne al percorso classi di generazione

Se un'unità di compilazione con problemi di compilazione viene spostata al di fuori del percorso classi di generazione Java, questi problemi Java si verificheranno sempre (il relativo elenco dei problemi di compilazione non viene aggiornato perché non verrà compilato di nuovo). La ridenominazione di un file *.java con un suffisso di estensione differente determina lo stesso tipo di problema. 

2.11 Azioni per modificare i file di sola lettura

Le azioni del menu Origine (ad esempio, Genera Getter e Setter) sono sempre disattivate quando il file è di sola lettura. Questa condizione si verifica anche quando il provider del repository supporta automaticamente l'estrazione dei file durante la modifica.

2.12 Modelli con codice Java

Non è possibile utilizzare ${CURSOR} all'interno di un commento in un modello con codice Java (Finestra > Preferenze > Java > Modelli). 

2.13 Organizzazione importazioni dai pacchetti predefiniti

L'organizzazione delle importazioni non gestisce le importazioni dai pacchetti predefiniti. Tenere presente che l'importazione da un pacchetto predefinito non è più supportata in JDK 1.4. 

2.14 Opzione Aggiungi Javadoc per i campi

L'opzione Aggiungi Javadoc non è valida per i campi.

2.15 Descrizione a comparsa Javadoc nell'editor Java

La descrizione a comparsa Javadoc che viene visualizzata quando ci si posiziona sugli identificativi dell'editor Java non gestisce correttamente i collegamenti all'interno dei commenti Javadoc. 

2.16  Codice HTML > visualizzato nella nuova classe Java invece di >

Quando viene creata una nuova classe Java, i commenti generati contengono il seguente testo:

Per modificare il modello di questo file generato, passare a Windows > Preferenze > Java > Generazione codice > Codice e commenti.

Il codice HTML per il simbolo "maggiore di" (>) verrà utilizzato in sostituzione del simbolo stesso. Il commento sarà:

Per modificare il modello di questo file generato, passare a Windows > Preferenze > Java > Generazione codice > Codice e commenti.

2.17 Problemi nell'apertura dell'editor dei file di classe

Se nella pagina delle preferenze è Sviluppo plug-in > Controllo percorso di generazione Java è stata abilitata l'opzione "Utilizza contenitori percorso classi", non sarà possibile aprire i file di classe contenuti in un JAR con un editor nel contenitore "Voci di plug-in obbligatorie". Per risolvere il problema, espandere il file di classi in Esplora pacchetti; in tal modo la struttura del file di classi viene visualizzata esattamente come apparirebbe nell'editor. Se per il JAR è disponibile uno zip di codice origine, un'altra soluzione consiste nel collegare l'origine al file JAR.

Per collegare l'origine a un JAR nel contenitore "Voci di plug-in obbligatorie", procedere come segue:

  1. In Esplora pacchetti, selezionare il progetto e scegliere Progetto > Proprietà dal menu di contesto
  2. Selezionare la pagina Percorso di generazione Java
  3. Passare alla pagina Librerie
  4. Espandere la voce "Voci di plug-in obbligatorie"
  5. Espandere la voce relativa al JAR
  6. Selezionare Collegamento origine e scegliere Modifica.
  7. Immettere il percorso dello zip origine corrispondente.
  8. Scegliere OK per confermare.

2.18 Impossibile eseguire o sottoporre a debug le classi di un progetto il cui nome contenga i caratteri GB18030

La maggior parte delle librerie di classi non supportano correttamente la creazione dei processi di sistema (via java.lang.Runtime.exec(...)) quando la riga comandi specificata contiene i caratteri GB18030. Questa limitazione fa sì che il debugger non è in grado di avviare le applicazioni quando la riga comandi generata contiene i caratteri GB18030.

2.19 Impossibile sottoporre a debug gli overflow dello stack

Se una sessione di debug viene sospesa a causa di un'eccezione java.lang.StackOverflowError (dovuta a un punto di interruzione di eccezione), il debugger potrebbe non essere in grado di ottenere informazioni di debug dalla JVM di destinazione, né di interagire correttamente con la macchina JVM da questo momento in poi.

2.20 Limitazioni di valutazione

Il debugger utilizza thread nella JVM di destinazione per eseguire valutazioni (sia esplicite richieste dall'utente che implicite, ad esempio richiami toString() nella vista Variabili). La JDI (Java Debug Interface) richiede che il thread in cui viene eseguita la valutazione venga sospeso da un evento utente (un punto di interruzione o una richiesta di avanzamento). Non è possibile eseguire valutazioni su thread sospesi dall'azione di sospensione. Inoltre, quando un punto di interruzione viene configurato per sospendere la JVM invece del singolo thread, lo stato dei thread che non avranno incontrato il punto di interruzione non sarà valido per poter eseguire una valutazione. Se si tenta di eseguire una valutazione in un thread non avente uno stato valido per poter svolgere l'operazione, vene visualizzato il messaggio di errore "Il thread deve essere sospeso da punto di avanzamento o interruzione per poter eseguire il richiamo del metodo".

2.21 Punti di interruzione esterni al percorso classi di generazione

È possibile creare punti di interruzione solo su elementi Java contenuti nel percorso classi di generazione di un progetto. Il debugger Java elimina automaticamente i punti di interruzione se gli elementi Java ad essi associati vengono rimossi dal percorso di generazione di un progetto. Tuttavia, se il plug-in del debug Java non è caricato quando il percorso di generazione viene modificato, i punti di interruzione rimarranno nello spazio di lavoro e quando l'utente tenterà di aprire il file associato al punto di interruzione dalla vista Punti di interruzione potrebbero verificarsi degli errori.

2.22 Correzioni rapide ed importazioni dai pacchetti predefiniti

Le correzioni rapide non gestiscono le importazioni dai pacchetti predefiniti. Tenere presente che l'importazione da un pacchetto predefinito non è più supportata in JDK 1.4.

2.23 Operazioni di taglia, copia e incolla non funzionanti per le risorse collegate nelle viste che contengono elementi Java

Le operazioni di taglia, copia e incolla non funzionano per i file e le cartelle collegate visualizzate nelle viste che contengono gli elementi Java, inclusa Esplora pacchetti. In alternativa, utilizzare queste azioni dalla vista Selezione.

2.24 Insiemi di lavoro Java non funzionanti per gli elementi del contenitore delle librerie di sistema JRE

Applicando un insieme di lavoro formato interamente da elementi appartenenti al contenitore delle librerie di sistema JRE come filtro della vista pacchetti, Esplora pacchetti potrebbe risultare vuoto.

2.25 Impossibile generare Javadoc per pacchetti i cui nomi contengono i caratteri GB18030

La maggior parte delle librerie di classi non supportano correttamente la creazione dei processi di sistema (via java.lang.Runtime.exec(...)) quando la riga comandi specificata contiene i caratteri GB18030. Poiché Javadoc viene creato utilizzando l'eseguibile Javadoc fornito con JDK, la generazione di Javadoc ha esito negativo se il nome del pacchetto o delle classi contiene i caratteri GB18030.

2.26 Editazione collegata non funzionante in modalità di sovrascrittura

L'editazione collegata viene utilizzata per ridenominare elementi all'interno di una singola unità di compilazione e per i modelli con più ricorrenze della stessa variabile di modello. L'editazione collegata non funziona correttamente in modalità di sovrascrittura.

2.27 Il modello di generazione del codice per il blocco catch deve terminare con un carattere di fine riga se l'ultima riga è un commento

Se l'ultima riga di un modello di generazione di codice per il blocco catch è un commento, la riga deve terminare con un carattere di fine riga. In caso contrario la parentesi graffa di chiusura si troverà sulla riga di commento, causando un errore di compilazione.

Visualizza il file Readme principale

>