2013-04-12 14 views
5

Es gibt ein paar Fragen zu SO, die diese Art getroffen haben, aber ich bin völlig neu in der Java-Entwicklung und ich kenne nicht die richtige Art, dies zu erreichen.Soll ich in Java ein neues Paket, einen neuen Ordner oder einen neuen Quellordner erstellen?

Ich habe eine C# -Lösung, enthält zwei Projekte (meine App und ein Unit-Test-Projekt) und innerhalb der App werden die meisten Dinge in Ordnern abgelegt z. Schnittstellen, Ausnahmen usw.

Ich versuche, dies in Java/Eclipse neu zu erstellen, aber ich weiß nicht wie. Ich habe viele Pakete bekommen, was sehr schlecht klingt. Ich habe auch versucht, einen Quellordner hinzuzufügen, aber das endete außerhalb des Pakets.

Kann mir jemand in die richtige Richtung zeigen?

Nämlich, welche von denen sollte ich verwenden, um meine Einheit Testprojekt/Satz von Unit-Tests und Unterordner, die nur für die Organisation von Sachen existieren.

Edit: Es sagt auch die Verwendung des Standardpakets wird nicht empfohlen. Was soll ich tun?

Edit 2: So sieht es aus. Sieht das vage korrekt aus? Meine ursprüngliche C# Lösung ist auf der rechten Seite.

My Layout

+0

Es ist nichts falsch daran, viele Pakete zu haben; wenn diese Pakete sinnvoll sind. –

+0

http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html zum Beispiel – user1516873

Antwort

2

In einem typischen Java-Eclipse-Projekt verfügen Sie über einen oder mehrere Quellordner (z. B. einen für App-Code, einen für Ihre Komponententests).

Jeder Ordner enthält einen Paketbaum, der normalerweise mit Ihrem Basispaket beginnt, z. B. com.mycompany.myapp.

Um Namenskonflikte zu vermeiden, beginnen Paketnamen normalerweise mit dem Domänennamen der Entität, die der Autor des Codes ist, beginnend mit der Top-Level-Domäne und rückwärts (allgemeiner zu spezifischer). Auf diese Weise ist jeder vollqualifizierte Name der Klasse eindeutig. Wenn Google zum Beispiel eine Klasse mit dem Namen List erstellt, wird diese als com.google.List bekannt sein, und es wird kein Konflikt mit der vorhandenen Schnittstelle java.util.List auftreten.

Sie können in diesem Basispaket eine unbegrenzte Anzahl von Paketen, zum Beispiel:

com.mycompany.myapp.persistence 
com.mycompany.myapp.domain 
com.mycompany.myapp.services 
com.mycompany.myapp.web 

Es hängt alles von Ihrem Projekt und die Art und Weise Sie Ihren Code und Ihre Klassen organisieren möchten.

Auf der logischen Ebene werden Pakete mit Punkten als Trennzeichen benannt. Sie enthalten Java-Klassen.

Auf der physikalischen Ebene auf der Festplatte ist jedes Paket ein Verzeichnis. Die Java-Klassen sind in .java-Dateien enthalten (am häufigsten eine Klasse pro Datei).

In Eclipse ist ein "Quellordner" ein Ordner in Ihrem Projekt, von dem Eclipse weiß, dass er Java-Quelldateien enthält. Es wird kompiliert in der Ausgabe enthalten (zum Beispiel JAR-Datei), wenn Sie Ihr Projekt erstellen.

In Eclipse sehen Sie sie normalerweise auf der logischen Ebene und zeigen Pakete an. Wenn Sie Eclipse mitteilen, dass ein neues Paket erstellt werden soll, erstellt es das Verzeichnis für Sie. Wenn Sie beispielsweise angeben, dass das Paket com.mycompany.myproject erstellt werden soll, wird automatisch ein Ordner com mit einem Ordner mycompany erstellt, der einen Ordner myproject enthält.

+0

Also sollte ich tun, was ich oben getan habe, aber verschachteln alle meine Pakete in einem ersten Paket? – NibblyPig

+0

Ja, im Grunde das. Die Klassen in Ihrem aktuellen "Standardpaket" befinden sich direkt in Ihrem Projektbasispaket und die anderen Pakete wären darin verschachtelt. Achten Sie darauf, ein Paket auszuwählen, das Ihr Projekt identifiziert, nicht nur Ihre Entität. Wenn Sie später andere Projekte erstellen, haben sie ein anderes Basispaket. –

+0

Wie erwähnt, ist es in vielen Fällen auch ratsam, Maven als Bauwerkzeug zu verwenden. Maven verfügt über Standard-Projektstrukturen für verschiedene Arten von Projekten (sie werden als Archetypen bezeichnet), die Hauptquellen, Testquellen, Ressourcen und so weiter trennen. Diese sind in der Regel sehr sinnvoll, und Sie erhalten viele andere Vorteile, die größte in IMHO Abhängigkeit (JARs) Management. –

1

in Java Source-Baumstruktur muss Paketstruktur

so foo.bar passen Paket in

src/foo/bar

Auch angelegt Paket Standard werden müssen möglicherweise nicht sei beraten - aber Sie können es immer noch verwenden - besser, Dinge in ein Paket zu setzen, obwohl

+1

Normalerweise bedeutet '/ src/foo/bar', dass die Quellen in'/src' sind und Klassen des Pakets 'foo.bar' befinden sich im Ordner'/src/foo/bar' –

+1

Nur ein Hinweis, wenn Sie mit C# vertraut sind, können Sie sich Pakete von Namespaces in C# vorstellen. Das Konzept ist ziemlich ähnlich. – jnovacho

+0

@Mark Rotteveel - gut entdeckt - bearbeitet – gheese

0

In Java andere Projekt Die Entwicklungsstruktur wird nach Art des Projekts geflossen. So wie Sie neu in Java und Eclipse sind, so ist es besser, Maven-Plugin zu installieren und Maven-Projekt zu erstellen und wählen Sie Archetypen nach Ihrem Projekttyp wie ein Standalone oder Web-basiert. Das Maven-Plugin erstellt die Projektstruktur einschließlich Pakete, Testpakete Quellordner usw. Sie können mehr über Projektstruktur von this

0

erstellen Die Verwendung des Standardpakets kann Namespace-Kollisionen erstellen. Stellen Sie sich vor, Sie erstellen eine Bibliothek, die eine MyClass-Klasse enthält. Jemand verwendet Ihre Bibliothek in seinem Projekt und hat auch eine MyClass-Klasse in seinem Standardpaket. Was sollte der Compiler tun? Das Paket in Java ist eigentlich ein Namensraum, der Ihr Projekt vollständig identifiziert. Daher ist es wichtig, das Standardpaket nicht in realen Projekten zu verwenden.

Verwandte Themen