Was passiert, wenn Sie eine leere Java-Datei kompilieren?

7

Wenn ich eine leere Java-Datei kompilierte, erzeugte sie keine Klassendatei. Ich wollte also wissen, wie der Compiler beim Kompilieren einer leeren Java-Datei reagiert. Es sollte eine leere Klassendatei in diesem erzeugt haben, warum nicht?

    
GuruKulki 18.03.2010, 05:34
quelle

9 Antworten

14

javac startet, sieht, dass in der Datei keine Klasse deklariert ist und endet. Damit eine .class -Datei erstellt werden kann, müssen Sie mindestens die Klassendeklaration in der Datei haben.

    
Amir Afghani 18.03.2010, 05:43
quelle
6

Was die meisten Antworten sagen, ist, dass eine Klassendatei keine kompilierte Java-Datei ist, sondern eine binäre Repräsentation einer Klasse.

Das Kompilieren einer Java-Datei könnte zu zwei Klassendateien führen, wenn die Java-Datei zwei Klassen enthält (obwohl nur eine öffentlich sein kann), und deshalb führt das Kompilieren von etwas mit null Klassen zu null Klassendateien.

    
Fredrik 18.03.2010 06:06
quelle
2

Nun, eine Java-Datei könnte so aussehen:

%Vor%

Wie würde es wissen, wie man das Ding nennt? Auch sollte es eine Klasse oder eine Schnittstelle oder eine Enum machen?

Anstatt die Wahl für dich zu treffen, tut es nichts (ich hätte selbst einen Fehler erwartet ... aber nichts ist auch vernünftig).

    
TofuBeer 18.03.2010 05:42
quelle
1

Wenn die Datei vollständig leer ist und nur .java aufgerufen wird, muss der Compiler nichts tun, wenn Sie versuchen, eine Klassendatei zu generieren. Wenn du ein

hast %Vor%

segment in der .java-Datei wird dann eine leere cass-Datei (Foo.class) erzeugt

    
zellio 18.03.2010 05:42
quelle
1

class Leere Klasse { }

// Emptyclass kann erfolgreich kompiliert werden und .class file wird ebenfalls generiert, aber während der Ausführung schlägt es fehl, weil JVM in der Klasse 'Emptyclass'

keine 'Hauptmethode' findet     
Lekha 03.10.2012 14:57
quelle
1

Wenn Sie die Klasse deklariert hätten (z. B. public class test{ } ), würde sie test.class file kompilieren und erstellen. Es würde nicht laufen, weil es keine main -Methode hat.

    
Bindu 15.02.2011 06:24
quelle
0

javac erstellt eine Klassendatei für jede Klassendeklaration (explizit oder anonym). Da Ihre Java-Datei keine enthielt, erzeugte der Compiler mit Recht keine Klassendateien.

    
Omry Yadan 18.03.2010 09:33
quelle
0

Java wird keine Klassendatei dieser Java-Datei erstellen. Weil zuerst nach dem Klassennamen gesucht wird. So wird nichts passieren

    
Akash Ranglani 09.08.2016 06:44
quelle
-1

Javac startet und prüft die Größe der Datei und wenn sie Null ist, kehrt sie einfach zurück, ohne eine .class Datei zu erstellen.

    
Neeraj 18.03.2010 09:23
quelle

Tags und Links