Im Prinzip müssen Sie Ihre Quelldateien nicht in einer Baumstruktur ablegen, die der Pakethierarchie entspricht. Der Compiler kompiliert jede Klasse und speichert den Paketnamen intern. Unabhängig davon, wie Sie die Quellverzeichnisse organisieren, weiß jede erzeugte Datei .class
, welchem Paket sie entspricht.
Das potentielle Problem ist, dass, wenn Sie mehrere Klassen kompilieren, einige dieser Klassen höchstwahrscheinlich aufeinander verweisen. Der Compiler und die JRE verwenden die Verzeichnishierarchie als ein Mittel, Klassen zu finden, wenn eine Klasse auf eine andere verweist. Standardmäßig platziert der Compiler kompilierte .class
Dateien im selben Verzeichnis wie seine Java-Quelle. Wenn das Quellverzeichnis higgley-piggledy ist, erhalten Sie eine Reihe von .class
Dateien, die selbst nicht nach Paketen strukturiert sind, was es schwierig macht, sie zu finden. Sie können das Problem - wenn Sie es wirklich wollen - immer noch umgehen, indem Sie den Klassensuchpfad in den Befehlszeilen javac
oder java
sorgfältig einstellen.
Darüber hinaus, wenn Sie ein Verzeichnis für den Compiler mit -d <path>
angeben, dann wird es eine Struktur der kompilierten Klassen erstellen, die die Pakethierarchie entspricht, aber die Quellen sind durcheinander. Ich bin mir nicht sicher, ob irgendjemand den Standardansatz benutzt, die kompilierten Klassen in dieselben Verzeichnisse wie Quellen zu stellen und im Prinzip könnte man eine ziemlich komplexe Java-Anwendung mit mehreren Paketen erstellen, in der sich alle Quelldateien befinden dasselbe Verzeichnis - vorausgesetzt, Sie könnten alle verfolgen.
Wie dem auch sei, die Idee, dass der Quellbaum mit der Pakethierarchie übereinstimmt, ist fest in der Java-Entwicklungsmethodik verankert, egal ob sie immer unbedingt notwendig ist oder nicht.IDE-Tools und Build-Tools wie Ant und Maven nehmen diese Organisation an, also müsstest du ein bisschen blutig sein, anders zu arbeiten.