Eclipse Klassen in den Classpfad bringen

takidoso

Erfahrenes Mitglied
Halli und Hallo,
ich habe in Eclipse (V3.1) zwar problemlos Bibliotheken, sprich jars, in den verwendeten Classpath reinbringen können aber wie ist es mit vereinzelten Klassen.
ich habe aus Neugier mal eine Klasse erzeugt ohne Paket, was zur Folge hat, dass die Klasse natürlich in der Root des Projektes erscheint und selbst dem java.lang paket untersteht. Wie kann ich diese einzelene Klasse nun gescheit bzw provisorisch in den Klassenpfad bringen um das ganze mal auszuprobieren?

Was mir ausßerdem noch auffiel war, das als ich die Klasse in Eclipse erzeugte und das Paket was erstmal vrgegeben war aus dem Textfeld löschte, daneben Default stand. Mal ne blöde Frage, kann man das Defaultpaket etwa von java.lang auf etwas anderes stellen?
wäre mir neu, aber geht das?

Takidoso
 
Hallo!

Wie meinst du dass genau?
Möchtest du eine Klasse aus deinem Java projekt in den Classpath aufnehmen? Alle Klassen deren Quellcode sich in einem Source Folder finden haben ihre kompilierte Entsprechung in einem bin-Folder. Dieser ist automatisch im Classpath. Wenn du eine externe Klasse (eine Klasse die nicht innerhalb des Eclipse Projektes existiert) in den Classpath aufnehmen willst kannst du beispielsweise über Properties -> Java Build Path -> Libraries -> Add Classfolder -> Create new Folder-> Advanced -> Link to folder in the file system das entsprechende Verzeichnis angeben.
Willst du so beispielsweise die Klasse im Package de.tutorials.Foo hinzufügen, so musst du dort das Verzeichnis auswählen dass das de-"Packageverzeichnis" enthält.

Was mir ausßerdem noch auffiel war, das als ich die Klasse in Eclipse erzeugte und das Paket was erstmal vrgegeben war aus dem Textfeld löschte, daneben Default stand. Mal ne blöde Frage, kann man das Defaultpaket etwa von java.lang auf etwas anderes stellen?
wäre mir neu, aber geht das?
Also bei mir habe ich im New Class Wizard nur einen default Radio Button... mit dem ich die Sichtbarkeit der Klasse auf "default" bzw. Package Private setzen kann.

Gruß Tom
 
Hi Tom,
hmm also alles was ich gemacht hatte war eine klasse über File->new->other... erstellt
und den package-namen einfach gelöscht, was IMHO java technisch bedeutet keine package statement also in den default, der da java.loang heißt.
was ich aber nun nicht verstehe ist, dass ich die so erzeugte klasse nicht ansprechen kann in dem eigetnlichen programm, obgleich es im selben Projektverzeichnis liegt.

hier prinzipeille Verzeichnisse
workpace
.
.
meineAnwendung
.settings
.bin
.de
.weiterepaketqualifire ...
klassen....java
klassen....class
MeineTestklasse .java
MeineTestklasse .class


so nun hätte ich eigetnlich angenommen er könnte aus einer beliebigen Klasse dieses Projektes Meinetestklasse anziehen, da das Paket java.lang grundsätzlich angezogen wird. Aber irgenwie geht es nicht. also kompilieren kann er die klasse ganz offensichtlich aber sie nicht einbinden, entzieht sich irgendwie meinem Verständnis, denn so wie du sagst hätte ich auch gedacht er würde sie weil unterm dem gleichen Projekt stehend die klasse automatisch haben.

geht ein ähnliches Beispiel bei Dir im Eclipse?

Takidoso
 
Hallo!

und den package-namen einfach gelöscht, was IMHO java technisch bedeutet keine package statement also in den default, der da java.loang heißt.
Nö ;-) Wenn du in deiner Klasse keine package deklaration stehen hast liegt die Klasse in keinem package...
Ich glaube du verwechselst hier was... Klassen aus dem java.lang Package stehen auch ohne expliziten Import immer zur Verfügung.

was ich aber nun nicht verstehe ist, dass ich die so erzeugte klasse nicht ansprechen kann in dem eigetnlichen programm, obgleich es im selben Projektverzeichnis liegt.
An deiner Stelle würde ich das Projekt nochmal neu erstellen. Diesmal mit der Option "Create seperate source and output folders".
Dann legst du deine Klassen einfach in einem Source Folder ab und sie werden automatisch in den Classpath aufgenommen...


Gruß Tom
 
ahhh ich habe mal mittels main() abgefragt was für eine Klasse es sei. offenbar hatte ich tatsächlich das falsch in erinnerung bezüglich default-package.
naja wie dem auch sei... wie kann man eigetlich eine solche "paketlose" Klasse in anderen dann aufrufen?
ich hatte jetz still angenommen das die Klassen ohne package dann auch überall anwendbar seien. Aber pustekuchen geht absolut nicht, oder weißt Du eine Vorgehensweise eine Klasse ohne paket (also im default-paket) in anderen Klassen mit Paket aufzurufen?

Takidoso

PS: und ich dachte ich hätte Java mal gekonnt :(
 
Zurück