Was ist "default package" in Eclipse konkret?

Status
Nicht offen für weitere Antworten.

ernst

Top Contributor
Hallo allerseits,
1) Wenn man in Eclipse ein package erzeugt, z.B. mypack1, wird automatisch in der erste Zeile der java-Datei erzeugt:
package mypack1

2) Wenn man in Eclipse _kein_ package erzeugt (anlegt), wird ein sogenanntes "default package" erzeugt.
Aber wo wird dann dieses package bezeichnet?
Oben bei 1) wird es mypack1 bezeichnet, aber wie heißt es bei "default package"?

mfg
Ernst
 

ernst

Top Contributor
Danke für deinen Beitrag.
1) Was meinst du mit
"default package" enthält alle Klassen OHNE package-Anweisung?
Ich kann mir darunter nichts vorstellen. was ist "default package" konkret (ein Ordner, oder was).
Eine java-Datei kann Klassen enthaten, aber wie "default package" ?

2) Angenommen, mein mit Eclipse angelegtes Projekt (Verzeichnis) heißt Test und darunter sind die von Eclipse angelgten Verzeichnisse:
bin und src
Angenommen darunter gibt es die java-Datei maintest.java. Dort gibt es keine package-Anweisung in der ersten Zeile.
Kannst du mir daran (an diesem Szenario) erklären was du meinst?

mfg
Ernst
 

ms

Top Contributor
Wenn eine Klasse keine package-Angabe als erste Anweisung hat, dann liegt sie direkt im src-Verzeichnis. Das heist, sie befindet sich in keinem package. Und dieses "kein package" zeigt eclipse als "default package" an.

ms
 

Tobias

Top Contributor
"bin" ist einfach ein Ordner. Darunter beginnen die Packages, die vom derzeitigen Standard-Classloader auf Verzeichnisse abgebildet werden, dass aber nicht sein müssen - du kannst dir jederzeit einen Classloader schreiben, der Packages anders abbildet. Packages sind lediglich Ordnungsmittel (man kann sie sich auch als Namensräume vorstellen). Eine Klasse, die nicht in einem Package liegt, befindet sich im "Default Package", dass ist der Ort, an dem der Classloader standardmäßig Klassen sucht. Beim Standard-Classloader ist das das Verzeichnis, das man ihm beim Aufruf übergeben hat (in Eclipse eben "bin").

Der Standard-Classloader geht in etwa so vor:

Ordner entgegen nehmen, in dem gesucht wird ("bin" in Eclipse)
qualifizierten Klassennamen entgegen nehmen (package-Name + Klassenname, also etwa java.lang.Object)
qualifizierten Klassennamen aufsplitten in Package und Klassenname
Wenn Package-Name nicht leer, Package-Namen nach Subpackages hin aufsplitten ("java", "lang")
Für jedes Subpackage einen entsprechend benannten Ordner unterhalb des Ordners des Oberpackages suchen, beginnend mit dem übergegebenen Verzeichnis ("bin")
Im untersten Package-Ordner muss eine Datei mit dem selben Namen wie die Klasse und der Endung ".class" liegen
Datei einlesen und interpretieren.

Für das Default-Package entfällt der ganze Ordner-suchen-Krams, hier wird die Datei direkt im übergebenen Ordner gesucht ("bin").

mpG
Tobias
 

ernst

Top Contributor
>Eine Klasse, die nicht in einem Package liegt, befindet sich im "Default Package", dass ist der Ort,
>an dem der Classloader standardmäßig Klassen sucht. Beim Standard-Classloader ist das das
>Verzeichnis, das man ihm beim Aufruf übergeben hat (in Eclipse eben "bin").
>
...
>
>Für das Default-Package entfällt der ganze Ordner-suchen-Krams, hier wird die Datei direkt
>im übergebenen Ordner gesucht ("bin").
>
Ist dann (in diesem Beispiel) das Verzeichnis bin ("ist der Ort, an dem der Classloader
standardmäßig Klassen sucht") der classpath, also der Pfad den man bei javac mit dem
Schalter -cp angibt?

mfg
Ernst
 

ernst

Top Contributor
>>Ist dann (in diesem Beispiel) das Verzeichnis bin ("ist der Ort, an dem der Classloader
>>standardmäßig Klassen sucht") der classpath, also der Pfad den man bei javac mit dem
>>Schalter -cp angibt?
>
>Ja.
>
Ich habe gelesen:
Wenn ein Member mit dem Bezeichner protected versehen ist, dann ist es erlaubt in _allen_ Klassen im gleichen package darauf zuzugreifen.

Angenommen es gibt kein package (weil keines erzeugt wurde), also nur das Pseudopackage "default package"
Gilt dann die obige Aussage für das "default package" und was heißt das dann _konkret_?

mfg
Ernst
 

Tobias

Top Contributor
Das heißt konkret, das jede Klasse im "default package" auf die als protected gekennzeichneten Elemente aller anderen Klassen im "default package" zugreifen kann. Das ist einer der Gründe, warum das "default package" nicht benutzt werden soll.

mpG
Tobias
 

ms

Top Contributor
Und ausserdem kannst du keine Klassen aus dem default-package in einer Klasse importieren, die sich in einem package befindet.

Also: IMMER PACKAGES VERWENDEN!

ms
 

ernst

Top Contributor
>Das heißt konkret, das jede Klasse im "default package" auf die als protected gekennzeichneten
>Elemente aller anderen Klassen im "default package" zugreifen kann. Das ist einer der Gründe,
>warum das "default package" nicht benutzt werden soll.
>
Habe etwas im Internet gestöbert und bin zu folgendem Ergebnis gekommen:
Wenn eine package-Anweisung fehlt, gehört die Klasse zum sogenannten default-package.
Klassen des default-package können ohne explizite import-Anweisung verwendet werden.
Ein Java-Compiler braucht laut Spezifikation nur ein einziges default-package zur Verfügung zu stellen. Typischerweise wird dieses Konzept aber so realisiert, dass jedes Verzeichnis (in dem java-Dateien ohne die package-Anweisung verwendet werden), ein default-package ist.
Ist das alles korrekt?

mfg
Ernst
 
S

SlaterB

Gast
> Wenn eine package-Anweisung fehlt, gehört die Klasse zum sogenannten default-package.

korrekt

> Klassen des default-package können ohne explizite import-Anweisung verwendet werden.

von anderen Klassen im default-package, also ganz normal
(Klassen im eigenen package können immer ohne import verwendet werden)

von anderen packages aus können diese Klassen aber GAR NICHT, nicht mal mit import, verwendet werden (soweit ich weiß)

> Ein Java-Compiler braucht [..]

keine Ahnung ;)

---------

> Das heißt konkret, das jede Klasse im "default package" auf die als protected gekennzeichneten Elemente aller anderen Klassen im "default package" zugreifen kann. Das ist einer der Gründe, warum das "default package" nicht benutzt werden soll.

finde ich nicht, das gilt für jedes andere package auch,
allgemein kann man sagen, dass man aus diesem Grunde nicht tausende Klassen in einem package definieren, sondern ruhig unterschiedliche packages zur Strukturierung verwenden sollte,
aber eine spezielle Rolle hat das default package in diesem Punkt nicht
 

ernst

Top Contributor
> Ein Java-Compiler braucht [..]

keine Ahnung ;)
---------
In Eclipse kann man doch beliebig viele default-packages erstellen (für jedes Projekt ein default-package).
Heißt das dann, dass jedes Verzeichniss (hat jetzt nichts mit Eclipse zu tun) , das eine java-Datei enthält ein default-package ist?
Das ist mir noch absout unklar.

mfg
Ernst
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Zugriff auf Default-Package? Allgemeine Java-Themen 6
J Kein Zugriff auf Klassen im Default Package Allgemeine Java-Themen 8
T auf Klasse in Default package zugreifen Allgemeine Java-Themen 10
S Problem bei Umstellung von (default package) auf Packages Allgemeine Java-Themen 10
W Socket.setSoTimeout -> BufferedReader -> Default value Allgemeine Java-Themen 4
C Theorie Duplicate default methods Allgemeine Java-Themen 5
S @Value mit bestimmt Werten, sonst default Allgemeine Java-Themen 42
S Input/Output Jave.utill.logging ohne Default-Locale also in Englisch Allgemeine Java-Themen 3
S Eclipse TestNG Default Test umbenennen Allgemeine Java-Themen 0
P Default constructor cannot handle exception type Allgemeine Java-Themen 6
Kr0e Reflection - Instanz einer Klasse erstellen, ohne Default-Constructor Allgemeine Java-Themen 15
G JAXB "no default constructor" Allgemeine Java-Themen 2
G default button für enter taste Allgemeine Java-Themen 3
B platform's default character encoding? Allgemeine Java-Themen 10
X Default-Werte für Methoden-/Funktions-Parameter Allgemeine Java-Themen 2
H JavaFX Warnung in package Zeile Allgemeine Java-Themen 2
jumichel Eclipse The package javax.mail is not accessible Allgemeine Java-Themen 3
M Mehrere Ressourcen in einem package ablegen Allgemeine Java-Themen 1
G Mac Package auslesen Allgemeine Java-Themen 17
F Reason: Missing Constraint: Import-Package: okhttp3.internal.http; version="0.0.0" Allgemeine Java-Themen 0
Tommy135 Input/Output Application aus Java package starten Allgemeine Java-Themen 2
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
T Plötzlich wird package nicht mehr gefunden Allgemeine Java-Themen 3
I Fehler beim Ant-Package erstellen mit Java 9 Allgemeine Java-Themen 1
K Classpath Alle Classen aus einem Package lesen Allgemeine Java-Themen 7
Sin137 Struktur der Klassen & Package Allgemeine Java-Themen 2
F Problem mit "package" Allgemeine Java-Themen 7
L Stack overflow bei einer endrekursiven Funktion (Anwendung: Spezialform des Package Merge) Allgemeine Java-Themen 4
D Classloader ohne Package Allgemeine Java-Themen 10
T Package durchsuchen Allgemeine Java-Themen 11
S leeres package obwohl inhalt da Allgemeine Java-Themen 53
S leeres Package nach neuinstallation des Pc Allgemeine Java-Themen 6
J Suche: Tool zum Auffinden gleichnamiger Klassen (Name und Package gleich) in unteschiedlichen JARs Allgemeine Java-Themen 5
G Gleiche Packages in verschiedenen JAR Dateien - Welches Package wird verwendet? Allgemeine Java-Themen 5
D Package switching Allgemeine Java-Themen 7
G log4j package filter Allgemeine Java-Themen 10
M Klasse aus xyz.class Datei laden / package entfernen? Allgemeine Java-Themen 4
Bastifantasti Package installieren Allgemeine Java-Themen 2
G Package / Architektur Allgemeine Java-Themen 11
J package javax.servlet does not exist Allgemeine Java-Themen 5
M Dateien aus dem Package im Jar-File rauskopieren Allgemeine Java-Themen 3
S Package in verschiedene Projekten einbinden? Allgemeine Java-Themen 3
B J-Unit Tests. Alle Tests eines Package einsammen. Allgemeine Java-Themen 4
ARadauer Package Struktur Allgemeine Java-Themen 3
G bild in package Allgemeine Java-Themen 6
G Klasse aus Package auslesen Allgemeine Java-Themen 13
V Alle Klassen eines Package auflisten? Allgemeine Java-Themen 6
G jfreechart probleme mit dem package? Allgemeine Java-Themen 2
E (einfaches) Problem mit import und package (export) Allgemeine Java-Themen 4
M diff package? Allgemeine Java-Themen 7
G externe package Allgemeine Java-Themen 7
A Package Probleme Allgemeine Java-Themen 9
J Konstruktor-Aufruf nur aus einem bestimmten Package erlauben Allgemeine Java-Themen 5
G Suche gutes Statistik Package Allgemeine Java-Themen 2
W Package via Reflection parsen Allgemeine Java-Themen 4
minzel ActionListener aus Package Allgemeine Java-Themen 24
P alle Klassen in package auflisten Allgemeine Java-Themen 2
M JNI: nach verschieben in package UnsatisfiedLinkError Allgemeine Java-Themen 3
D Laaaange Klassennamen und Package-Pfade. Allgemeine Java-Themen 5
J Einbinden einer protected-Methode aus anderem Package Allgemeine Java-Themen 2
H .java Dateien in anderem Package Allgemeine Java-Themen 8
S javadoc: package problem Allgemeine Java-Themen 3
G package und classpath grundsatzfrage Allgemeine Java-Themen 7
N Reflection: An Package einer .class-Datei kommen Allgemeine Java-Themen 2
T Problem: Ein Package für 2 Projekte? Allgemeine Java-Themen 3
H Package name aus Class-File auslesen Allgemeine Java-Themen 11
G Java Package Allgemeine Java-Themen 2
EagleEye klassen package problem Allgemeine Java-Themen 3
C Jakarta commons package downloaden und installieren Allgemeine Java-Themen 7
L Package und Klassenname von aufrufender Klasse holen Allgemeine Java-Themen 2
Z auf static Methode aus anderen Package zugreifen? Allgemeine Java-Themen 7
H Klassen in einem Package ermitteln Allgemeine Java-Themen 6
C Problem mit Package Allgemeine Java-Themen 9
A Eclipse hängt sich auf Allgemeine Java-Themen 7
lewbue Eclipse Eclipse Dateinamen in Hieroglyphen Allgemeine Java-Themen 4
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
thor_norsk Eclipse - Fehlermeldung - JavaFX Allgemeine Java-Themen 24
Viper13125 Eclipse Hängt sich auf, wenn ich SimpelDateFormat drin lasse Allgemeine Java-Themen 2
M Eclipse unter Linux Lite Allgemeine Java-Themen 2
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
T Eclipse Synchronisierung mit Github Allgemeine Java-Themen 9
d.lumpi JDA eclipse dateien versenden Allgemeine Java-Themen 4
1Spinne JDK 8 für Eclipse installieren Allgemeine Java-Themen 5
d.lumpi net.* pakete importen (Eclipse) Allgemeine Java-Themen 2
B BOT mit Java [Eclipse] programmieren Allgemeine Java-Themen 7
ReinerCoder Eclipse Fehlermeldung - The constructor Double(double) is deprecated Allgemeine Java-Themen 8
M Probleme bei Eclipse wenn ich entpacke Allgemeine Java-Themen 15
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
platofan23 Wie .txtDatei im Java Eclipse-Projekt bzw. in der Jar speichern? Allgemeine Java-Themen 7
R @author vor Methode (eclipse) Allgemeine Java-Themen 1
M JAVA API in Eclipse auf deutsch Allgemeine Java-Themen 18
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
L Eclipse Java Code ausführen Allgemeine Java-Themen 18
D Eclipse Export Allgemeine Java-Themen 15
Q Eclipse Escape Sequenzen Farbe ändern Allgemeine Java-Themen 4
X Eclipse Kann fann/j nicht in Eclipse linken... Allgemeine Java-Themen 6
A Eclipse Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 7
L SQL Datei in Eclipse erstellen Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben