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

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen
K
K
Zeile 1: Zeile 1:
Manchmal steht man vor der Frage, wie man das Verzeichnis der aktuell gestarteten Java-Anwendung ermittelt. Also wo befindet sich die ausgeführte Datei (.jar oder .class) im Datei-System und (von) wo wurde sie gestartet?
+
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|Jar-Datei]]) bzw. den Pfad der Bytecode-Datei:
 
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:
  
 
<syntaxhighlight lang="java">
 
<syntaxhighlight lang="java">
     //gibt den Pfad dieser Jar-Datei zurück
+
import java.net.URISyntaxException;
 +
 
 +
[...]
 +
 
 +
     //Gibt den Pfad dieser Anwendung zurück
 
     private String getCurrentJarPath() {
 
     private String getCurrentJarPath() {
         String path = getJarPath();
+
         String path = getRunnungJar();
         if(path.endsWith(".jar")) {
+
         if (path.endsWith(".jar")) {
             return path.substring(0, path.lastIndexOf("/"));
+
             return path.substring(0, path.lastIndexOf(System.getProperty("file.separator")) + 1);
 
         }
 
         }
 
         return path;
 
         return path;
 
     }
 
     }
   
+
 
     //gibt den absoluten Pfad inklusive Dateiname dieser Anwendung zurück
+
     //Gibt den absoluten Pfad (einschließlich Name der .class-/Jar-Datei) zurück
     private String getJarPath() {
+
     private String getRunningJar() {
 
         final CodeSource source = this.getClass().getProtectionDomain().getCodeSource();
 
         final CodeSource source = this.getClass().getProtectionDomain().getCodeSource();
 
         if (source != null) {
 
         if (source != null) {
             return source.getLocation().getPath().replaceAll("%20", " ");
+
             try {
 +
                return source.getLocation().toURI().getPath();
 +
            } catch (URISyntaxException ex) {
 +
                Logger.getLogger(ProjectSettings.class.getName()).log(Level.SEVERE, null, ex);
 +
                JOptionPane.showMessageDialog(null, ex.getLocalizedMessage(), ex.getClass().getName(), JOptionPane.ERROR_MESSAGE);
 +
            }
 
         }
 
         }
 
         return null;
 
         return null;
Zeile 23: Zeile 34:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
*<code>getCurrentPath()</code> gibt den Pfad (ohne den Namen der Jar-Datei) dieser Anwendung zurück (benötigt dazu die getJarPath()-Methode)
+
*<code>getCurrentPath()</code> gibt den Pfad dieser Anwendung zurück (benötigt dazu die getRunnungJar()-Methode)
*<code>getJarPath()</code> gibt den absoluten Pfad (einschließlich Name der Jar-Datei) zurück
+
*<code>getRunnungJar()</code> gibt den absoluten Pfad (einschließlich Name der laufenden Jar-Datei) zurück
  
 
[[Kategorie:Java-Codeschnipsel]]
 
[[Kategorie:Java-Codeschnipsel]]

Version vom 27. Dezember 2021, 18:27 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;

[...]

    //Gibt den Pfad dieser Anwendung zurück
    private String getCurrentJarPath() {
        String path = getRunnungJar();
        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 .class-/Jar-Datei) zurück
    private String getRunningJar() {
        final CodeSource source = this.getClass().getProtectionDomain().getCodeSource();
        if (source != null) {
            try {
                return source.getLocation().toURI().getPath();
            } catch (URISyntaxException ex) {
                Logger.getLogger(ProjectSettings.class.getName()).log(Level.SEVERE, null, ex);
                JOptionPane.showMessageDialog(null, ex.getLocalizedMessage(), ex.getClass().getName(), JOptionPane.ERROR_MESSAGE);
            }
        }
        return null;
    }
  • getCurrentPath() gibt den Pfad dieser Anwendung zurück (benötigt dazu die getRunnungJar()-Methode)
  • getRunnungJar() gibt den absoluten Pfad (einschließlich Name der laufenden Jar-Datei) zurück