Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Funzionamento del comando java

    Ciao a tutti, sto imparando ad usare java ma non capisco (e non trovo spiegazioni) sul funzionamento del comando java.
    Il mio dubbio è questo: scrivo il mio programma e lo chiamo Prova.java. Se la classe che contiene il main è pubblica allora anche la classe dovrà chiamarsi Prova altrimenti va bene un nome qualsiasi. Una volta compilato il mio programma ottengo il file Prova.class.
    Ora per mandarlo "in esecuzione" scrivo java seguito dal nome della classe che voglio eseguire... Quello che mi sfugge è come faccia a capire la JVM in quale file andare a pescarsi la classe.

    Es pratico: file Prova.java

    class NuovoFile{

    public static void main (String[] args){
    ...
    }
    }

    faccio javac Prova.java e mi crea Prova.class
    poi faccio javaNuovoFile e viene eseguita la classe... ma come fa java a sapere che tale classe è in Prova.class? Si passa tutti i file class presenti in quella cartella?

    Ciao e grazie.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    La regola è piuttosto semplice:

    In un file .java puoi dichiarare più di una classe, ma solamente una può essere pubblica. Se esiste una classe pubblica, il file DEVE chiamarsi come questa classe pubblica.

    Nel tuo esempio non hai nessuna classe pubblica, quindi il file può chiamarsi un po' come gli pare (è un caso MOLTO, MOLTO limite: generalmente nessuno si sognerebbe di fare una roba del genere).

    Quando esegui, se non diversamente specificato (vedi variabile d'ambiente CLASSPATH), in CLASSPATH hai automaticamente la directory corrente. La JVM "conosce" tutte e sole le classi presenti nel CLASSPATH. Quindi, la JVM "conosce" tutte e sole le classi presenti nella directory corrente (nel tuo caso). Di conseguenza, dando il nome della classe contenente il main, la JVM la cercherà all'interno del CLASSPATH, la troverà e la eseguirà.

    Diciamo che il tuo esempio è alquanto "fuori dal normale"... generalmente, per esercizi banali, si crea una classe pubblica ed il file avrà (ovviamente) lo stesso nome della classe.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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 © 2025 vBulletin Solutions, Inc. All rights reserved.