Как получить путь к исполняемому файлу .jar? - PullRequest
2 голосов
/ 01 марта 2010

Как получить путь к исполняемому файлу .jar в Java?

Я попытался использовать System.getProperty("user.dir");, но это дало мне только текущий рабочий каталог, который неверен, мне нужен путь к каталогу, в котором файл .jar находится непосредственно, а не в "pwd".

Ответы [ 3 ]

2 голосов
/ 01 марта 2010

Не могли бы вы указать, зачем вам нужен путь?
Если вам нужно получить доступ к какому-либо свойству из файла jar, вам следует взглянуть на ClassLoader.getSystemClassLoader ();
не забывайте, что ваши классы не обязательно хранить в jar-файле.


// if your config.ini file is in the com package.
URL url = getClass().getClassLoader().getResource("com/config.ini");
System.out.println("URL=" + url);

InputStream is = getClass().getClassLoader().getResourceAsStream("com/config.ini");
try {
    if (is != null) {
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    }
    else {
        System.out.println("resource not found.");
    }
}
catch (IOException e) {
    e.printStackTrace();
}

С уважением.

0 голосов
/ 01 марта 2010

Возможно свойство java.class.path?

Если вы знаете имя вашего jar-файла и если оно находится в пути к классам, вы можете найти его путь там, например с небольшим регулярным выражением.

0 голосов
/ 01 марта 2010

взято с Java-Forumns :

        public static String getPathToJarfileDir(Object classToUse) {
        String url = classToUse.getClass().getResource("/" + classToUse.getClass().getName().replaceAll("\\.", "/") + ".class").toString();
        url = url.substring(4).replaceFirst("/[^/]+\\.jar!.*$", "/");
        try {
            File dir = new File(new URL(url).toURI());
            url = dir.getAbsolutePath();
        } catch (MalformedURLException mue) {
            url = null;
        } catch (URISyntaxException ue) {
            url = null;
        }
        return url;
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...