# Zugreifen auf Klassen im übergeordneten Verzeichnis



## The Dark Listener (11. Juli 2007)

Hallo Allerseits,
ich hoffe ihr könnt mir helfen oder zumindest eine Anregung geben:

Folgendes Dateisystem:

+ Programm (Ordner)
| Start.class (mit main())
| Source.class
| Config.class
| ...
|+ source (Ordner)
| | fil_default.java
| | fil_misc.java
| | ...

Mein Problem ist, dass ich in der fil_*.java Dateien auch auf Methoden bzw. Variablen von Source.class und System.class zugreifen muss.

Die fil_*.java Dateien kann ich somit net kompilieren, weil sie die Methoden/Variablen nicht finden.

Hab schon verschiedenes ausprobiert... Gibt es ne Möglichkeit (ohne das statische CLASSPATH) irgendwie die class Dateien im Hauptordner in die fil_ Dateien zu importieren?
Müsste dann aber über relative Pfade  verwirklicht werden, da der Programmordner durchaus später mal woanders plaziert werden könnte...

Ich hoffe ihr schaut hier! Danke im vorraus!

Mfg TDL


----------



## The Dark Listener (13. Juli 2007)

Hat hier keiner eine Idee? :-/


----------



## Kulabac (13. Juli 2007)

Ideen schon ... aber ich versteh die Problembeschreibung nicht. Sind das unterschiedliche Projekte bzw. andere Programme oder wie kommt diese Struktur zustande?

System.class sollte immer vorhanden sein, egal worauf der Classpath steht (falls wir hier von so Sachen wie System.out.println(...) reden. Das ist ja auch nichts, was du importierst.
Ebenso versteh ich nicht, warum du es im übergeordneten Verzeichnis hast (falls es das selbe Java-Projekt ist, weil wenn es nur in einem anderen Package wäre, könntest du es problemlos importieren, aber an Zeug aus dem Default-Package scheint man nicht so einfach dranzukommen.

Naja, aber im Zweifelsfall (ganz kompliziert) kannst du dir bestimmt auch zu deiner aktuellen Klasse das aktuelle Verzeichnis angeben lassen, aus dem Pfad das übergeordnete Verzeichnis raussuchen und dann per Classloader dir die Dateien holen ... ich versteh halt nur nicht warum sowas nötig sein sollte


----------



## The Dark Listener (13. Juli 2007)

Sorry, hab mich verschrieben, meinte natürlich nicht System.class sondern Config.class...

Also, ich versuch nochmal kurz zu umschreiben, was ich machen will:

Ein Programm soll eine Art Plugin System haben. Damit nicht alles unübersichtlich im Hauptverzeichnis liegt, sollen die Plugin-Klassen (fil_*.class) ausgelagert werden und zwar in das Unterverzeichniss. Es soll später möglich sein, einfach ein neues Plugin hinzuzufügen, indem die entsprechende Klasse in dieses Unterverzeichnis packt.

Das Problem hierbei ist aber, dass ich dann in den Plugin-Klassen nicht mehr auf Funktionen vom Hauptprogramm zugreifen kann, weil er anscheinend nur im Unterverzeichnis nach den Methoden sucht. Somit kann ich die Dateien im Unterverzeichnis nicht kompilieren.

Mit dem ClassLoader könnte ich es mal bei Gelegenheit versuchen, aber das wäre sehr aufwendig und nicht so schön zu programmieren, wenn ich in jeder Plugin - Klass erstmal ne Seitelang die Hauptklassen einbinden muss...

Ich hoffe es findet sich da nochwas anderes...

Mfg TDL


----------



## Kulabac (13. Juli 2007)

Das klingt schon verständlicher 

Gibt bestimmt tausend verschiedene Wege das Problem zu lösen. Ich hab sowas leider noch nie gemacht. Ist denn das ganze ein Java-Projekt? Weil ich versteh immer noch nicht warum das ganze nicht funktioniert.

Also angenommen du hast das komplette "Projekt", also dein Hauptprogramm mit Plugin mit der Struktur, die du oben beschrieben hast. Dann ist das Plugin doch kein eigenständiges Programm, müsste also vom Hauptprogramm aufgerufen werden. Damit müssten die entsprechenden Klassen aber bekannt sein, weil sie liegen ja definitiv vor und sind in der gleichen JVM und so weiter.
Was ist eigentlich meine ist, dass du beim Programmieren das ganze ja als ein großes Paket (also z.B. als ein Eclipse-Projekt, in das du alle Dateien packst) sehen kannst, damit hast du während dem Schreiben von dem Plugin keine Probleme. Und wenn du das Plugin alleine auslieferst müsste dein Kunde oder was auch immer ja ein kompatibles Hauptprogramm haben, so dass das ganze immernoch laufen müsste wenn die Package-Struktur stimmt.

Probleme kriegst du glaub ich nur wie oben erwähnt, wenn dein Hauptprogramm nicht in einem Package liegt. Also ich hab bisher nur mit Packages gearbeitet, deswegen weiß ich nicht, wie es ohne ist, aber als ich vorhin mal kurz getestet hab, hat er es nicht geschafft aus einem Package die Sachen aus dem Default-Package zu importieren.

Also wie gesagt, hab sowas nie getestet, aber so stell ich mir das vor.


----------



## The Dark Listener (13. Juli 2007)

Jup, ist ein Java Projekt...

Ok, schaue ich mir das mit dem Package mal genauer an...  Hab es bisher nur kurz überflogen gehabt...

Hab grad erst mit Java angefangen und bringe mir parallel zu diesem Programm die Syntax bei...  Eclipse benutze ich net, weil ich ne Abneigung gegen solche ies habe, die sich zu sehr mit eigenem Code integrieren... 

Aber trotzdem Danke! 

Mfg TDL

P.S.: Ich weiss net warum aber macht bei mir im Beitrag aus P R O G G I E S immer "ies"...


----------

