Pfad des ausgeführten Programms (Jar-Datei) ermitteln: Unterschied zwischen den Versionen
Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springenK |
K |
||
Zeile 1: | Zeile 1: | ||
− | Manchmal steht man vor der Frage, wie man das Verzeichnis der aktuell | + | 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"> | ||
− | // | + | import java.net.URISyntaxException; |
+ | |||
+ | [...] | ||
+ | |||
+ | //Gibt den Pfad dieser Anwendung zurück | ||
private String getCurrentJarPath() { | private String getCurrentJarPath() { | ||
− | String path = | + | 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 (einschließlich Name der .class-/Jar-Datei) zurück |
− | private String | + | 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(). | + | 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 | + | *<code>getCurrentPath()</code> gibt den Pfad dieser Anwendung zurück (benötigt dazu die getRunnungJar()-Methode) |
− | *<code> | + | *<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