Как я могу получить правильный путь, где он был дважды нажат или выполнен в Java? - PullRequest
0 голосов
/ 16 февраля 2012

Мой java jar установлен в c:\program files<i do not know>\i do not know\here.jar. Когда пользователь выполняет мое приложение.

Я всегда получаю c: \ uesrs \\ here.jar и его сбой.

String Windows7HomeEditionProgramFileDirectroyStruct = System.getProperty("user.dir");

Как я могу получить правильный путь, по которому дважды щелкали или выполнялись?

Подробности (проверены оба ответа, но никто не говорит, где находится банка):

Попробуйте 1)

new File(".").getAbsolutePath();
or

new File(".").getCanonicalPath();

C:\Users\sun>java -jar "C:\Users\sun\Documents\NetBeansProjects\JavaApplication1
\dist\JavaApplication1.jar"
C:\Users\sun\.

Попробуйте 2)

ClassLoader.getSystemClassLoader().getResource(".").getPath();

C:\Users\sun>java -jar "C:\Users\sun\Documents\NetBeansProjects\JavaApplication1
\dist\JavaApplication1.jar"
Exception in thread "main" java.lang.NullPointerException
        at javaapplication1.JavaApplication1.main(JavaApplication1.java:18)

Продолжение:

String test = JavaApplication1.class.getProtectionDomain().getCodeSource().getLocation().getPath();

C:\>java -jar "C:\Users\sun\Documents\NetBeansProjects\JavaApplication1\dist\Jav
aApplication1.jar"
/C:/Users/sun/Documents/NetBeansProjects/JavaApplication1/dist/JavaApplication1.
jar

Ответы [ 3 ]

3 голосов
/ 16 февраля 2012

Использование user.dir всегда даст вам каталог Users в Windows.

Попробуйте это:

ClassLoader.getSystemClassLoader().getResource(".").getPath();
3 голосов
/ 16 февраля 2012

Вы можете получить текущий каталог следующим образом:

String path = new File(".").getAbsolutePath();

То, что вы получаете, используя "user.dir", это каталог пользователя.

2 голосов
/ 16 февраля 2012

Системное свойство "user.dir" возвращает рабочий каталог для файла JAR.То же самое верно и для ответа Биньямина.

Вы ищете каталог, содержащий исполняемый файл JAR.Аналогичный вопрос был задан в этой теме , ответ может вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...