Pfad des ausgeführten Programms (Jar-Datei) ermitteln: Unterschied zwischen den Versionen
Aus Byte-Welt Wiki
KKeine Bearbeitungszusammenfassung |
KKeine Bearbeitungszusammenfassung |
||
| (9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| 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; | ||
import java.security.CodeSource; | |||
String path = | import javax.swing.JOptionPane; | ||
if(path.endsWith(".jar")) { | |||
return path.substring(0, path.lastIndexOf(" | /** | ||
* 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; | return path; | ||
} | } | ||
/ | /** | ||
* Gibt den absoluten Pfad (einschließlich Name der aktuell laufenden .class-/Jar-Datei) zurück | |||
final CodeSource source = | * | ||
* @return der absolute Pfad der laufenden Jar-Datei | |||
*/ | |||
public static String getRunningJar() { | |||
final CodeSource source = JarLocalizer.class.getProtectionDomain().getCodeSource(); | |||
if (source != null) { | if (source != null) { | ||
return source.getLocation().getPath(). | 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; | return null; | ||
} | } | ||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
*<code> | *<code>getCurrentJarPath()</code> gibt den Pfad dieser Anwendung zurück (benötigt dazu die getRunnungJar()-Methode) | ||
*<code> | *<code>getRunningJar()</code> gibt den absoluten Pfad (einschließlich Name der laufenden Jar-Datei) zurück | ||
[[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
