Verzeichnis ausgeben
Matthias Bode
- java
Hallo, hallo!
Kurze einfache Frage:
wie kann ich mir das Verzeichnis ausgeben lassen, in dem sich die class Dateien eines Java-Projektes befinden, sprich, das Verzeichnis, in dem die Main-Methode liegt?
Vielen Dank im Voraus
Matthias
hallo,
wie kann ich mir das Verzeichnis ausgeben lassen, in dem sich die class Dateien eines Java-Projektes befinden, sprich, das Verzeichnis, in dem die Main-Methode liegt?
Kurze einfache Gegenfrage: wo soll das ausgegeben werden und wer soll es zu welchem Zweck zu sehen bekommen? Und ist die "main"-Methode nicht etwas, was du in einer "*.java"-Datei definierst und danach kompilierst ... liegt die also nicht eher innerhalb deiner kompilierten Klassendatei und schert sich womöglich überhaupt nicht um irgendwelche Verzeichnishierarchien?
Grüße aus Berlin
Christoph S.
Also, das ganze geht darum:
Man kann per Dateiauswahl eine Datei irgendwo aus dem großen weiten Verzeichnisbaum seines Rechners auswählen. Diese soll dann in den Ordner kopiert werden, in dem die "ausführbaren" class Dateien liegen.
Geht sowas?
Hej,
Man kann per Dateiauswahl eine Datei irgendwo aus dem großen weiten Verzeichnisbaum seines Rechners auswählen. Diese soll dann in den Ordner kopiert werden, in dem die "ausführbaren" class Dateien liegen.
Warum du das auch immer wollen würdest ...
Bin mir nicht sicher ob es eine elegantere Methode gibt, aber du könntest mittels
System.getProperty( "java.class.path" )
zur Laufzeit den Klassenpfad auswerten und innerhalb dessen nach der class-Datei suchen. Berücksichtige dabei Paket-Hierarchien. Berücksichtige ferner, dass die Klasse z.B. natürlich nicht in einem Jar stecken darf.
Sicher, dass das Heimverzeichnis
System.getProperty( "user.home" )
oder wenigstens das aktuelle Arbeitsverzeichnis
System.getProperty( "user.dir" )
für deine Belange nicht reicht?
Geht sowas?
Klar. Prinzipiell geht mit Java _fast_ alles. Wenn nicht auf direktem Weg, dann muss man es sich halt selber basteln. Die Frage ist nur, ob es sinnvoll ist. Damit wollte ich aber gewiss nicht sagen, dass es nicht schon Sinn haben könnte.
Beste Grüße
Biesterfeld
Hallo,
Kurze einfache Frage:
wie kann ich mir das Verzeichnis ausgeben lassen, in dem sich die class Dateien eines Java-Projektes befinden, sprich, das Verzeichnis, in dem die Main-Methode liegt?
Das kannst du z.B. über das CodeSource-Objekt eines Class-Objekts rausfinden.
Etwa so:
CodeSource classCodeSource = getClass().getProtectionDomain().getCodeSource();
URL classLocation = classCodeSource.getLocation();
Je nachdem ob sich die Class-Datei in einem JAR-Archiv befindet oder direkt
im Dateisystem abgelegt ist, wirst du entweder eine file:- oder eine jar:-URL
erhalten. Davon ausgehend kannst du dann weiterschauen.
Beachte aber, daß eine class-Datei theoretisch zur Laufzeit generiert und
bekannt gemacht werden kann, so daß die oben beschriebene Methode nicht
zwingend funktionieren muß.
Google ggf. mal nach "getProtectionDomain getCodeSource" um nähere Ausführungen
zu diesem Thema zu erhalten.
Gruß
Slyh