Автор оригинала: mkyong.
В Java мы можем использовать следующие фрагменты кода, чтобы получить путь к запущенному файлу JAR.
// static String jarPath = ClassName.class .getProtectionDomain() .getCodeSource() .getLocation() .toURI() .getPath(); // non-static String jarPath = getClass() .getProtectionDomain() .getCodeSource() .getLocation() .toURI() .getPath();
Пример вывода.
/home/mkyong/projects/core-java/java-io/target/java-io.jar
1. Получите путь бегущей БАНКИ
1.1 Создайте исполняемый файл JAR.
org.apache.maven.plugins maven-jar-plugin 3.2.0 true com.mkyong.io.howto.resources.TestApp
1.2 Запустите приведенный ниже код, чтобы получить имя или путь к запущенному файлу JAR.
package com.mkyong.io.howto.resources; import java.net.URISyntaxException; public class TestApp { public static void main(String[] args) { TestApp obj = new TestApp(); try { // Get path of the JAR file String jarPath = TestApp.class .getProtectionDomain() .getCodeSource() .getLocation() .toURI() .getPath(); System.out.println("JAR Path : " + jarPath); // Get name of the JAR file String jarName = jarPath.substring(jarPath.lastIndexOf("/") + 1); System.out.printf("JAR Name: " + jarName); } catch (URISyntaxException e) { e.printStackTrace(); } } }
Выход
$ mvn clean package $ java -jar target/java-io.jar JAR Path : /home/mkyong/projects/core-java/java-io/target/java-io.jar JAR Name: java-io.jar
2. Тури()?
Если имя файла или путь к файлу содержат специальные символы, например, %
, путь .getLocation.getPath ()
будет кодировать специальные символы.
try { // return raw, no encode String jarPath = TestApp.class .getProtectionDomain() .getCodeSource() .getLocation() .toURI() .getPath(); System.out.println("JAR Path : " + jarPath); // url encoded String jarPath2 = TestApp.class .getProtectionDomain() .getCodeSource() .getLocation() //.toURI .getPath(); System.out.println("JAR Path 2 : " + jarPath2); } catch (URISyntaxException e) { e.printStackTrace(); }
Выход
$ java -jar java-io%test.jar JAR Path : /home/mkyong/projects/core-java/java-io/target/java-io%test.jar JAR Path 2 : /home/mkyong/projects/core-java/java-io/target/java-io%25test.jar
Скачать Исходный Код
$ клон git $ клон git
$ cd java-ввод-вывод
Рекомендации
- Исходный код JavaDoc
- RFC 2396 – Синтаксис и формат URI
- Maven – Создать файл JAR
Оригинал: “https://mkyong.com/java/java-get-the-name-or-path-of-a-running-jar-file/”