Matthias Bode: Verzeichnis ausgeben

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

  1. 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.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. 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?

      1. 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

        --
        Art.1: Et es wie et es
        Art.2: Et kütt wie et kütt
        Art.3: Et hätt noch immer jot jejange
        Das Kölsche Grundgesetz
  2. 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