2014-01-17 4 views
0

Прежде все говорят мне, что это дубликат, пожалуйста, выслушайте меня ...Получить путь к исполняемому файлу из баночки в Java 7

Когда вам нужен абсолютный путь к исполняемому файлу изнутри бегущего банку (= путь к себе) независимо от текущего рабочего каталога, в старые времена (Java 6 JRE 1.6) это используется для работы как шарм:

getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); 

в настоящее время в Java 7 (JRE 1.7) это просто возвращает "./". Если вы хотите протестировать это, вам нужно создать runnable jar, потому что при компиляции из источника вы получите путь, как ожидалось.

Это сводит меня с ума, поскольку я искал решение для того, что кажется вечностью. Я прибегал к жесткому кодированию абсолютного пути, но, очевидно, это означает, что банка не переносима.

Кто-нибудь знает, что делать?

Спасибо !!!

ответ

0

Просто наткнулся на ту же проблему после экспорта одного из моих старых проектов Java 6, которые также использовали тот же метод для получения пути выполнения. Вот быстрый обходной путь (замените «Start.class» с именем класса или использования «GetClass()»):

String path = Start.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 
path = new File(rootFolder).getAbsolutePath(); 

Скорее всего, вы будете в конечном итоге с пути еще заканчивая периодом. Таким образом, вы можете исправить это с помощью:

if (path.endsWith(".")) path = path.substring(0, path.length() - 1); 

испытано с использованием Oracle JRE 7 на Windows 7 64bit и Xubuntu 14.04

+0

К сожалению, не было возможности попробовать. Вернется на это как можно скорее –

Смежные вопросы