2013-03-04 3 views
0

Я знаю, что этот вопрос задан очень много, но ни один из предыдущих ответов не работает для меня.Как получить доступ к абсолютному пути к файлу исполняемого Jar?

Если я делаю свое приложение исполняемым Jar, есть ли способ сообщить, где находится Jar в файловой системе, когда он выполняется? Мое приложение должно знать, поэтому он может извлечь папку из ее jar (обработав ее как zip-файл) в указанный каталог.

EDIT: Спасибо всем, кто внес свой вклад, но я думаю, что это тупик. Мне придется попробовать что-то еще. Извините за то, что тратишь время всех. Я буду перепроверять по этому вопросу, так что если кто-нибудь делает взломать его, пожалуйста, ответьте: D

Для чего это стоит, вот мой тестовый код:

package jarProblem; 

import java.io.File; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 

public class Main { 

    public Main() { 

     ClassLoader loader = Main.class.getClassLoader(); 

     String path = loader.getResource("jarProblem/Main.class").getPath(); 

     File file = new File(path); 

     String pathToJar = file.getParentFile().getAbsolutePath(); 

     JOptionPane.showMessageDialog(new JFrame(), new JLabel(pathToJar),"CurrentFolder", JOptionPane.PLAIN_MESSAGE); 

     System.exit(0); 
    } 

    public static void main (String[] args) { 

     new Main(); 
    } 

} 
+0

Возможный дубликат. http://stackoverflow.com/questions/3153337/how-do-i-get-my-current-working-directory-in-java – christopher

+0

В принятом ответе на этот вопрос отображается «rsrc: ./», когда я добавляю его в мой тестовый код – CptSpike

+0

Я просто использовал его, и он отлично работает для меня. В какой папке находится ваш JAR-файл? – christopher

ответ

0
System.getProperty("user.dir"); 
+0

Возвращает «C:/Windows/System32», где находится javaw.exe – CptSpike

+0

Ваш javaw находится в папке System32? что я знаю, javaw установлен по умолчанию в Program Files/Java/jdk /bin ... Возможно, переменные среды возвращают этот путь. –

+0

Я думал, что это было странно. Мой JDK находится в Program Files/Java и тоже имеет javaw.exe. В любом случае, это не указывает на мой рабочий стол :( – CptSpike

0

Вы пробовали Класс пути? В нем есть все, что вы ищете.

+0

Не могу сказать, что я слышал об этом - я сейчас займусь этим. EDIT: Я не знаю, как я могу использовать Path для неизвестной локализации файла? – CptSpike

+0

Это в Java 7. Этот класс делает все, что связано с путями. – user1230731

+0

Комментарии используются для уточнения у ОП. Не ответы. – christopher

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