Ci sono una serie di regole davvero "di base" per quanto riguarda i file .java e le definizioni delle classi. E tali regole dovrebbero essere imparate praticamente "a memoria".

- All'interno di un sorgente .java ci possono essere più definizioni di classi.
- Nel sorgente, al massimo solo una classe può essere marcata 'public'.
- Se esiste una classe 'public' allora il nome del file (a parte l'estensione .java) deve corrispondere esattamente al nome della classe 'public'.
- Se non esiste una classe 'public' (cioè sono tutte classi con livello di accesso di default o detto di "package"), allora non c'è alcuna restrizione sul nome del file.

E al tool 'java' va passato il nome di una classe (completo di package se ci sono), non il nome di un path e/o file.