Рубрики
Без рубрики

Java – Получить имя или путь к запущенному файлу JAR

В Java мы можем использовать “getClass().getprotectiondomain().getcodesource().getLocation().Touri().getPath()”, чтобы получить путь к запущенному файлу JAR.

Автор оригинала: 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-ввод-вывод

Рекомендации

Оригинал: “https://mkyong.com/java/java-get-the-name-or-path-of-a-running-jar-file/”