Domande frequenti: JDT

È possibile utilizzare un compilatore Java diverso da quello incorporato (javac) nel workbench?

No. Il JDT fornisce una serie di sofisticate funzioni inclusa una completa ricompilazione incrementale automatica, la valutazione di frammenti di codice, l'assistente per il codice, gerarchie dei tipi e sostituzione del codice a caldo. Tali funzioni richiedono il supporto speciale offerto dal compilatore del workbench Java (parte integrante del generatore incrementale di progetto del JDT), non disponibile nei compilatori Java standard.

Da dove provengono i pacchetti Java?

Un progetto contiene esclusivamente file e cartelle. La nozione di pacchetto Java viene introdotta mediante il percorso classi di un progetto Java (nell'interfaccia utente, la visualizzazione Pacchetti presenta i pacchetti come definiti dal percorso classi). Suggerimento: se la struttura del pacchetto non è quella prevista, controllare il percorso classi. L'infrastruttura di ricerca Java rileva dichiarazioni e riferimenti di elementi Java solo sul percorso classi.

Quando utilizzare un file di librerie JAR interno o esterno?

Una risorsa interna risiede in un progetto del workbench e viene quindi gestita dal workbench; come per altre risorse, il workbench può gestire le versioni di tali risorse interne. Una risorsa esterna non fa parte del workbench e può essere utilizzata solo per riferimento. Ad esempio, un JRE è spesso esterno e molto grande, e non è necessario associarlo ad un sistema VCM.

Quando è opportuno utilizzare cartelle di origine all'interno di un progetto Java?

Ogni progetto Java localizza i propri file di origine Java mediante una o più voci di tipo di origine sul percorso classi del progetto. Utilizzare cartelle di origine per organizzare in gruppi i pacchetti di un progetto esteso o per conservare il codice sorgente separato da altri file dello stesso progetto. Inoltre, utilizzare le cartelle di origine se sono presenti file (ad esempio, la documentazione) che non è necessario inserire sul percorso di build.

Cosa sono gli allegati di origine e come se ne definisce uno?

Le librerie sono memorizzate come file JAR contenenti file di classe binari (e probabilmente altre risorse). Tali file di classe binari forniscono informazioni di convalida su pacchetti, classi, metodi e campi. Queste informazioni sono sufficienti per la compilazione o l'esecuzione, ma sono molto meno complete rispetto al codice sorgente originale. Per rendere più semplice l'esame e il debug di librerie binarie, esiste un meccanismo per associare un file sorgente JAR (o ZIP) corrispondente a un file JAR binario.

Argomenti correlati:

  • Vedere la sezione relativa alla Pagina delle Impostazioni Java
  • Vedere la sezione relativa alla Scheda Librerie
  • Perché tutte le risorse vengono duplicate nella cartella di output (bin)?

    Se il proprio progetto Java utilizza cartelle di origine, nel corso della compilazione dei file di origine del progetto, il compilatore Java copia risorse non Java nella cartella di output in modo che saranno disponibili sul percorso classi del programma in esecuzione.

    Come impedire che i file della documentazione vengano copiati nella cartella di output del progetto?

    Utilizzare cartelle di origine e inserire tutte le risorse che non si desidera copiare in tali cartelle in una cartella separata che non sia inclusa nel percorso classi.

    Come si crea un pacchetto predefinito?

    Non è necessario farlo. I file nella cartella principale di una cartella di origine o di un progetto sono considerati come inseriti nel pacchetto predefinito. In effetti, ogni cartella di origine ha la capacità di contenere un frammento del pacchetto predefinito.

    Cos'è il refactoring?

    Il refactoring effettua trasformazioni del programma conservandone il comportamento. JDT supporta una serie di trasformazioni descritte nella pubblicazione di Martin Fowler Refactoring: Improving the Design of Existing Code, Addison Wesley 1999.

    Quando si utilizza la selezione codice/risoluzione codice (F3)?

    Per localizzare l'elemento Java che corrisponde a un intervallo di codice sorgente con l'aiuto del compilatore.

    Le informazioni sul programma Java (gerarchia di tipo, dichiarazioni, riferimenti) vengono prodotte dal generatore Java? Tali informazioni vengono aggiornate anche quando la funzione di build automatica è disattivata?

    Le informazioni sul programma Java sono indipendenti dal generatore Java. Esse vengono automaticamente aggiornate quando si effettuano modifiche di risorse o operazioni Java. In particolare, tutte le funzionalità offerte dalla strumentazione Java (gerarchie di tipo, assistente per il codice, ricerca) continueranno ad essere perfettamente eseguite quando la funzione di build automatica è disattivata; ad esempio, quando si effettua un refactoring che richiede la disattivazione dei generatori, è ancora possibile utilizzare l'assistente per il codice che rifletterà le ultime modifiche (non ancora sottoposte a build). Diversamente dall'avvio di programmi (esecuzione e debug), la sola funzionalità che richiede il generatore Java è la valutazione di frammenti di codice.

    Dopo la riapertura di un workbench, la prima build che si verifica dopo la modifica di un file di origine Java sembra impiegare molto tempo. Perché?

    Quando il workbench viene chiuso, il generatore incrementale di progetto Java salva il proprio stato interno in un file. Alla prima build dopo la riapertura del progetto, il generatore incrementale di progetto Java ripristinerà il proprio stato interno. Quando il file è molto grande, si può verificare un ritardo inusuale durante la build.

    Non è possibile visualizzare la gerarchia dei tipi per una classe. Cosa fare?

    Verificare che il proprio percorso classi di build sia impostato in modo corretto. L'impostazione del percorso classi di build corretto rappresenta un'importante attività durante lo sviluppo Java. Senza il percorso di build corretto, non sarà possibile compilare il codice. Inoltre, non sarà possibile effettuare la ricerca o l'esame delle gerarchie dei tipi per gli elementi Java.