Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di filips
    Registrato dal
    Sep 2011
    residenza
    Seconda stella a destra (questo e' il cammino)
    Messaggi
    155

    [Java] Dubbio su file .class

    Nel quarto capitolo della guida Programmazione Java qui su HTML leggo:

    Qui il nome “Primo” che passiamo come argomento dell’eseguibile java non si riferisce al nome del file .class, ma è proprio il nome della classe da eseguire.
    Inutile continuare a scervellarmi, tanto non capisco.. qualcuno per favore può spiegare il senso, perché a me viene logico pensare che invece si debba riferire al file .class. Grazie e saluti a tutti.
    Per fare un tavolo ci vuole un fiore.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da filips Visualizza il messaggio
    Inutile continuare a scervellarmi, tanto non capisco.. qualcuno per favore può spiegare il senso, perché a me viene logico pensare che invece si debba riferire al file .class. Grazie e saluti a tutti.
    Quando si avvia una applicazione con l'eseguibile java, si deve passare il nome completamente qualificato della classe, NON un percorso ad un file .class .
    Quindi ad esempio:

    java com.esempio.ClassePrincipale

    Poi alla fin fine ci dovrà essere da qualche parte un ClassePrincipale.class ma sarà la JVM a trovarlo andando a cercare lungo il "classpath". Un file .class può essere "sfuso" sul file-system oppure può essere contenuto all'interno di un file .jar . Per cercarlo, la JVM converte il nome qualificato della classe in un path parziale es. com/esempio/ClassePrincipale.class e poi "prova" a cercarlo nelle directory e/o file .jar che sono elencati nel classpath.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di filips
    Registrato dal
    Sep 2011
    residenza
    Seconda stella a destra (questo e' il cammino)
    Messaggi
    155
    Ti ringrazio per questo chiarimento, solo un ultimo dubbio..

    Poco prima, in quel capitolo, si afferma che l'identità tra il nome della classe e quello del file, risulta obbligatoria solo nel caso la classe sia pubblica.

    Mi chiedo quindi, in caso non lo sia, come java riesca a trovare ed eseguire la classe, se gli si fornisce il percorso utilizzando il nome di questa (visto che, per quanto detto, al di là di convenzioni extra linguaggio che generalizzano comunque la regola d'identità, si ha la facoltà di farlo). Per esempio:

    Nome classe: Classe
    Nome file: FileClasse.class
    Per fare un tavolo ci vuole un fiore.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da filips Visualizza il messaggio
    Poco prima, in quel capitolo, si afferma che l'identità tra il nome della classe e quello del file, risulta obbligatoria solo nel caso la classe sia pubblica.
    Sì, a livello di sorgente. All'interno di un file sorgente .java si possono avere più definizioni di tipi (classi/interfacce/enum/annotation).
    Solo un tipo al massimo nel sorgente può essere public. E se c'è tale tipo public, allora il nome del file sorgente (a parte estensione .java) deve corrispondere esattamente al nome di quel tipo. Se nessun tipo è public, il file sorgente lo puoi denominare come vuoi, non ci sono vincoli.

    Quote Originariamente inviata da filips Visualizza il messaggio
    Mi chiedo quindi, in caso non lo sia, come java riesca a trovare ed eseguire la classe, se gli si fornisce il percorso utilizzando il nome di questa (visto che, per quanto detto, al di là di convenzioni extra linguaggio che generalizzano comunque la regola d'identità, si ha la facoltà di farlo). Per esempio:

    Nome classe: Classe
    Nome file: FileClasse.class
    No, quando i .class vengono generati, vengono generati con il nome della classe. Non con il nome del sorgente.

    Se in un sorgente FileClasse.java c'è una classe Classe che NON è public, il .class generato è Classe.class
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di filips
    Registrato dal
    Sep 2011
    residenza
    Seconda stella a destra (questo e' il cammino)
    Messaggi
    155
    Senti un po', ti ri-Ringrazio perché sei stato iperchiaro, e in base a quanto avevo letto non avrei mai capito (giusto enfatizzare il NON).

    Inevitabile ora integrare la guida con le tue puntuali osservazioni.
    Per fare un tavolo ci vuole un fiore.

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.