Pfad des ausgeführten Programms (Jar-Datei) ermitteln: Unterschied zwischen den Versionen

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K
K
 
(23 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Folgender Code ermittelt den Pfad der aktuell laufenden Anwendung (ausführbare Jar-Datei):
+
Manchmal steht man vor der Frage, wie man das Verzeichnis der aktuell laufenden Java-Anwendung ermittelt.
  
<code=java>
+
'''Also wo befindet sich die aktuell ausgeführte Datei (.jar oder .class) im Datei-System?'''
private String getJarPath() {
+
 
  final CodeSource source = this.getClass().getProtectionDomain().getCodeSource();
+
Folgender Code ermittelt den [[Pfad]] und ggf. den Namen der aktuell laufenden Anwendung (ausführbare [[JAR-Datei|Jar-Datei]]) bzw. den Pfad der Bytecode-Datei:
  if (source != null) {
+
 
      return source.getLocation().getPath();
+
<syntaxhighlight lang="java">
  }
+
import java.net.URISyntaxException;
  return null;
+
import java.security.CodeSource;
 +
import javax.swing.JOptionPane;
 +
 
 +
/**
 +
* JarLocalizer bietet Methoden zur Bestimmung der Position der laufenden Java-Anwendung
 +
* (Jar-Datei) im Dateisystem des Host-Rechners.
 +
*
 +
* @author Gernot Segieth, 16.07.2014
 +
*/
 +
public class JarLocalizer {
 +
 
 +
    /**
 +
    * Gibt den Pfad der laufenden Anwendung zurück.
 +
    *
 +
    * @return der Pfad der laufenden Jar-Datei
 +
    */
 +
    public static String getCurrentJarPath() {
 +
        String path = getRunningJar();
 +
        if (path.endsWith(".jar")) {
 +
            return path.substring(0, path.lastIndexOf(System.getProperty("file.separator")) + 1);
 +
        }
 +
        return path;
 +
    }
 +
 
 +
    /**
 +
    * Gibt den absoluten Pfad (einschließlich Name der aktuell laufenden .class-/Jar-Datei) zurück
 +
    *
 +
    * @return der absolute Pfad der laufenden Jar-Datei
 +
    */
 +
    public static String getRunningJar() {
 +
        final CodeSource source = JarLocalizer.class.getProtectionDomain().getCodeSource();
 +
        if (source != null) {
 +
            try {
 +
                return source.getLocation().toURI().getPath();
 +
            } catch (URISyntaxException ex) {
 +
                System.err.println(ex);
 +
                JOptionPane.showMessageDialog(null, ex.getLocalizedMessage(), ex.getClass().getName(), JOptionPane.ERROR_MESSAGE);
 +
            }
 +
        }
 +
        return null;
 +
    }
 
}
 
}
</code=java>
+
</syntaxhighlight>
 +
 
 +
*<code>getCurrentJarPath()</code> gibt den Pfad dieser Anwendung zurück (benötigt dazu die getRunnungJar()-Methode)
 +
*<code>getRunningJar()</code> gibt den absoluten Pfad (einschließlich Name der laufenden Jar-Datei) zurück
  
[[Kategorie:Java]]
 
 
[[Kategorie:Java-Codeschnipsel]]
 
[[Kategorie:Java-Codeschnipsel]]

Aktuelle Version vom 27. Dezember 2021, 18:55 Uhr

Manchmal steht man vor der Frage, wie man das Verzeichnis der aktuell laufenden Java-Anwendung ermittelt.

Also wo befindet sich die aktuell ausgeführte Datei (.jar oder .class) im Datei-System?

Folgender Code ermittelt den Pfad und ggf. den Namen der aktuell laufenden Anwendung (ausführbare Jar-Datei) bzw. den Pfad der Bytecode-Datei:

import java.net.URISyntaxException;
import java.security.CodeSource;
import javax.swing.JOptionPane;

/**
 * JarLocalizer bietet Methoden zur Bestimmung der Position der laufenden Java-Anwendung
 * (Jar-Datei) im Dateisystem des Host-Rechners.
 *
 * @author Gernot Segieth, 16.07.2014
 */
public class JarLocalizer {

    /**
     * Gibt den Pfad der laufenden Anwendung zurück.
     *
     * @return der Pfad der laufenden Jar-Datei
     */
    public static String getCurrentJarPath() {
        String path = getRunningJar();
        if (path.endsWith(".jar")) {
            return path.substring(0, path.lastIndexOf(System.getProperty("file.separator")) + 1);
        }
        return path;
    }

    /**
     * Gibt den absoluten Pfad (einschließlich Name der aktuell laufenden .class-/Jar-Datei) zurück
     *
     * @return der absolute Pfad der laufenden Jar-Datei
     */
    public static String getRunningJar() {
        final CodeSource source = JarLocalizer.class.getProtectionDomain().getCodeSource();
        if (source != null) {
            try {
                return source.getLocation().toURI().getPath();
            } catch (URISyntaxException ex) {
                System.err.println(ex);
                JOptionPane.showMessageDialog(null, ex.getLocalizedMessage(), ex.getClass().getName(), JOptionPane.ERROR_MESSAGE);
            }
        }
        return null;
    }
}
  • getCurrentJarPath() gibt den Pfad dieser Anwendung zurück (benötigt dazu die getRunnungJar()-Methode)
  • getRunningJar() gibt den absoluten Pfad (einschließlich Name der laufenden Jar-Datei) zurück