Newsgroup: it.comp.java
Titolo: compilazione e running

Salve,
ho incominciato da poco a studiare java e subito mi si presenta questo
problema che da inesperte non riesco a risolvere:
- non ho nessun ambiente di sviluppo, compilo i miei file con "javac
pippo.java pluto.java minnie.java" , e mi vengono fuori  file .class
pippo$1.class pippo$2.class pippo.class pluto.class minnie.class.
- provo a lanciare java pippo e mi da un errore di Exception
java.lang.NoClassDefFoundError ecc.ecc. Eppure sono sicuro che il prog non
ha errori. Forse dovrei lanciare il prog con qualche opzione...
Potete aiutarmi
alberto

Riepilogo veloce e fondamentale su come si crea un programmino Java.
1- in Java il file in cui salvi il tuo programma deve avere lo stesso e
identico (comprese le maiuscole e minuscole) nome della classe in esso
contenuto.
Pippo.java : ->
public class Pippo{
    // Codice
}
Se salvi il file come pippo.java, la virtual machine ti fa un sacco di
pernacchie.
2- per eseguire una applicazione java devi inserire nella classe principale
(dopo vedremo come inserire più classi dentro lo stesso file) il metodo
main.
Senza questo metodo, che va scritto in un ben specifica maniera, la classe
non è avviabile.
Il metodo va dichiarato così: public static void main(String argv[])
Puoi giusto cambiare il nome della variabile argv.
es :
public class Pippo extends JFrame{
    public static void main(String argv[])
    {
        (new Pippo()).setVisible(true);
    }
}
3- una classe Java può contenere altre classi (inner class).
    Queste vengono salvate come file a parte e sono appunto quelle che vedi
con il simbolo $
public class Pippo extends JFrame{
    public static void main(String argv[])
    {
        (new Pippo()).setVisible(true);
    }
    class Pluto
    {
    }
}
Dopo la compilazione ottieni : Pippo.class e Pippo$Pluto.class
Un file java può anche contenere più classi tra di loro slegate:
Puoi salvare dentro un unico file (es: Pippo.Java) anche un'altra classe.
es:
public class Pippo extends JFrame{
    public static void main(String argv[])
    {
        (new Pippo()).setVisible(true);
    }
}
class Paperino extends JPanel
{
}
In questo caso dopo la compilazione ottieni due file ben distinti
Pippo.class e Paperino.class
La differenza tra questo metodo e quello delle InnerClass sostanzialmente
sta nel fatto che una InnerClass può accedere a tutte le risorse delle
classe contenitore, mentre nel secondo caso è solo un modo di evitare di
fare tanti file. Ne scrivi uno, lo compili e in automatico hai compilato
tutte le classi.
Ciao.

Grazie tante della tua chiara esposizione.
Ma come faccio ad avviare (Run) un'applicazione che mi ha restituito
Pippo.class e Pippo$Pluto.class ?
Io ho proavato con java Pippo e con java Pippo&Pluto ottenendo solo il
messaggio di errore che avevo inoltrato. Ripeto nessun errore ho in fase di
compilazione.
ciao e grazie di nuovo
alberto
"TelespallaBob" <santo...@NOSPAMciaoweb.it> ha scritto nel messaggio
news:aegr9h$sgc$1...@lacerta.tiscalinet.it...


 ciao e grazie di nuovo
Sei sicuro di aver dichiarato il main nella classe Pippo? La
dichiarazione va fatta cosě:
public static void main(String argv[]) {
    /* codice */
}

 ha scritto nel messaggio
news:6H5P8.50759$5i1.1...@news2.tin.it...


 ha errori. Forse dovrei lanciare il prog con qualche opzione...
Allora, vuol dire che non trova i file class; dovresti specificare il testo
esatto, perché non si capisce quale classe non viene trovata. Ipotesi:
-non trova qualche classe di Java, esterna al tuo programma: allora non è
impostato il classpath, e devi inserire in autoexec.bat(se sei in
DOS/Windows) una riga
set classpath= qualcosa
dove qualcosa è il percorso, all'interno del tuo jdk, di rt.jar, seguito da
';.'
es: il jdk è in c:\jdk; allora
set classpath="c:\jdk\jre\lib\rt.jar";.
significa: cerca le classi in c:\jdk\jre\lib\rt.jar e in ., cioè la
directory corrente(non all'impostazione di classpath, all'esecuzione)
e riavviare perché venga applicata questa modifica
- non trova qualche classe del tuo programma; allora o non fai partire javac
nella directory con i tuoi file .class, o hai usato la direttiva package
all'interno del tuo sorgente(non import, proprio package) ma non mi sembra.
Comunque, inserisci il testo completo dell'errore(fai un copia/incolla di
TUTTO!!!!) e ti sapremo dire meglio,
Ciao!