Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315

    [java] FAQ di Java

    FAQ di carattere generale

    1) Dove scaricare il compilatore?
    2) SDK e JRE sono la stessa cosa?
    3) Cosa sono PATH e CLASSPATH?
    4) Come si impostano PATH e CLASSPATH?
    5) Come compilare/eseguire un programma?
    6) Quando lancio un programma ottengo questo errore:
    6.1 "Exception in thread "main": java.lang.NoClassDefFoundError: nomeClasse",
    6.2 "Exception in thread "main": java.lang.NoSuchMethodError: main",

    -------------- Risposte --------------

    1) Dove scaricare il compilatore?
    Al momento la versione aggiornata del linguaggio e' la 1.4.1
    Si puo' scaricare dal sito della sun a questo indirizzo
    http://java.sun.com/j2se/1.4.1/download.html


    2) SDK e JRE sono la stessa cosa?
    No, sono due cose diverse (come dimostra la diversa dimensione dei pacchetti 30/40 MB il primo e circa 9 MB il secondo).
    In particoalre il primo e' il pacchetto per sviluppatori (SDK = software development kit) e comprende il compilatore, l'ambiente di esecuzione (cioe' contiene il jre, per cui e' inutile scaricarlo singolarmente) un debugger, un tool per la creazione della documentazione e altri tool utili. Il secondo, invece, e' SOLO l'ambiente di esecuzione (jre = Java Runtime Environment) e serve per poter eseguire i programmi scritti in Java.

    3) Cosa sono PATH e CLASSPATH?
    PATH e CLASSPATH fanno parte delle "variabili d'ambiente", in particolare fanno riferimento a due percorsi sul filesystem.
    La prima rappresenta il percorso in cui risiedono gli eseguibili della jdk, cioe' il compilatore, l'interprete, ecc...
    Di solito si imposta per poter utilizzare questi programmi solo con il loro nome, senza doverne specificare tutto il percorso.
    Ad esempio utilizzare:
    javac NomeFile.java
    al posto di
    /usr/local/java/bin/javac NomeFile.java
    Il classpath, invece, rappresenta il percorso utilizzato dall'interprete per cercare le classi definite dall'utente (quelle, cioe', che non sono comprese con il pacchetto jdk fornito dalla SUN).
    Questa variabile, quindi, non va impostata fintanto che non si scrivono delle classi che si voglio utilizzare come librerie, o fintanto che non si comincia ad utilizzare delle librerie esterne, scritte da altri.
    Da notare che, nel momento in cui si specifica il classpath in questo modo, bisogna aggiungere anche la directory corrente . (punto), per fare in modo che l'interprete cominci la ricerca da dove e' stato lanciato.

    4) Come si impostano PATH e CLASSPATH?
    In generale il modo in cui si devono impostare le variabili d'ambiente varia a seconda del sistema operativo usato.

    Windows 9x/ME:
    Le variabili d'ambiente vanno specificate nel file autoexec.bat che si trova in c:\ , per cui con un editor di testi (esempio Notepad) aprire c:\auotexec.bat e scorrere fino alla riga in cui e' specificato il PATH. Si aggiunge un ; (punto e virgola) per separare i vari percorsi e si aggiunge la directory in cui si e' installato l'sdk (per default c:\j2sdk1.4.1), seguito da \bin. Per cui alla fine assomogliera' ad una cosa del genere:
    PATH=c\:altro;c:\j2sdk1.4.1\bin

    Il classpath non si trova sempre gia' configurato, a volte bisogna crearlo, in tal caso basta aggiungere la riga
    SET CLASSPATH=.;c:\j2sdk1.4.1\userLib;d:\altraDir\altr eLib
    Da notare che come primo percorso e' impostata la directory corrente . (punto), questo per far si che il ClassLoader parta proprio dalla directory da cui si lancia il programma a cercare le classi utente, altrimenti seguirebbe solo il classpath.

    Windows 2000/XP:
    La sintassi e' la stessa di 9x/ME, solo che invece di editare l'autoexec.bat bisogna andare su
    Risorse del Computer -> Proprieta' -> Avanzate -> Variabili d'ambiente
    e impostare i percorsi di PATH e di CLASSPATH (se non c'e', bisogna crearla)

    Linux:
    Non so se qualche distribuzione fornisca dei front-end grafici per poterlo fare, ad ogni modo per impostare questi dati a mano bisogna editare un file. Il file si chiama .bash_profile e si trova nella home directory degli utenti, per cui va editato il file per ogni utente di cui si vuole impostare PATH e CLASSPATH. In alternativa, se si vuole impostare queste variabili per TUTTI gli utenti, si puo' editare il file /etc/profile
    Una volta aperto il file prescelto si deve aggiungere il percorso alla riga in cui e' gia' impostata la variabile, separando le opzioni con il carattere : (due punti)
    Ad esempio se la jdk e' stata installata in /usr/java/j2sdk1.4.1, bisogna aggiungere questo percorso, seguito da /bin, per cui risulterebbe una cosa simile:
    PATH=$PATH:/usr/local/bin:/usr/java/j2sdk1.4.1/bin
    Mentre, nel caso del classpath, supponendo che le librerie personali risiedano in
    /home/utente/java/myLib si deve scrivere:
    CLASSPATH=$CLASSPATH:.:/home/utente/java/myLib
    Da notare l'aggiunta della directory corrente . (punto), in modo che le classi utente vengano cercate anche nella directory da cui si lancia il programma

    5) Come compilare/eseguire un programma?
    Per compilare si deve agire da riga di comando, (console sotto linux, finestra dos sotto windows). Il comando da utilizzare e' javac NomeProgramma.java (notare l'estensione .java). Mentre per lanciare il programma (sempre da riga di comando) si utilizza: java NomeComando. In questo caso senza estensione.
    Nota per gli utenti Windows: il comando javac non e' case sensitive, ma il comando java si, per cui si puo' compilare un programma tutto in minuscolo, ma per eseguirlo bisogna fare attenzione a maiuscole e minuscole.

    6) Quando lancio un programma ottengo questo errore:
    6.1 "Exception in thread "main": java.lang.NoClassDefFoundError: nomeClasse"
    Questo errore si ha quando l'interprete java non e' riuscito a trovare la classe specificata. Cio' puo' avvenire se il nome specificato non e' corretto (controllare l'uso delle maiuscole, vedi faq #5), oppure se il classpath e' impostato in maniera non corretta (vedi faq #4). Se si utilizzano i package, ricordarsi di specificare il nome della classe con tutto l'indirizzo del packare, es:
    java primo.secondo.NomeClasse

    6.2 "Exception in thread "main": java.lang.NoSuchMethodError: main"
    Questo errore si ha quando l'interprete java non riesce a trovare il metodo main nella classe specificata. La classe principale, che rappresenta il punto di partenza del programma che si vuole eseguire, deve sempre contenere un metodo main dichiarato in questo modo:
    public static void main(String args[])
    in quanto esso rappresenta il punto d'ingresso del programma, cioe' il metodo che viene chiamato dall'interprete java, al momento dell'esecuzione del programma.
    Ciao,
    Lorenzo

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Visto che tempo fa si era parlato di stilare le faq principali, suddivise in base ai linguaggi di programmazione, ho cominciato a scrivere le faq per java.
    In questo post ho cercato di mettere le domande di carattere generale di cui si nota maggiormente il bisogno quando si e' agli inizi.

    Spero che tutto questo possa essere utile a chi si avvicina a questo linguaggio, cosi' come agli altri, che magari possono aver bisogno della "dritta" giusta, al momento giusto.
    Per far si che l'utilita' di queste faq possa crescere, ed aiutare altre persone, sono ben accetti suggerimenti, critiche, proposte, saluti, o quant'altro
    Buon lavoro a tutti
    Ciao,
    Lorenzo

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    "BUMP!"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.