Dlaczego tak
Kompilator javac wymaga nazwy pliku źródłowego z rozszerzeniem, czyli javac Main.java, i tworzy plik Main.class. Maszynę wirtualną uruchamia się poleceniem java z nazwą klasy, a nie pliku, czyli java Main. Polecenie java Main.class kończy się błędem, bo JVM szuka klasy o nazwie „Main.class”. Samo java Main.java uruchamia program bez tworzenia pliku .class, ale późniejsze javac Main jest błędne, bo brakuje rozszerzenia.