Каков рабочий каталог по умолчанию для jar, запущенного из проводника Windows?

Я создал jar-файл своего приложения, чтобы пользователи могли запускать его из проводника Windows. Он загружает файл JSON в свой собственный рабочий каталог для некоторых настроек (используя путь «.\config.json»). Однако, когда я запускаю его из файла jar из проводника Windows, он не может найти файл конфигурации, в то время как запуск того же файла jar из командной строки работает. Я предполагаю, что это связано с тем, что проводник устанавливает рабочий каталог для чего-то другого, кроме папки jar. На что он настроен? (И как я могу найти собственную папку jar?)


person Orange    schedule 18.11.2011    source источник
comment
Если вы можете изменить эту банку, вы можете использовать текущий каталог, используя это: java-forums.org/new-java/ и проверьте   -  person dbf    schedule 19.11.2011


Ответы (2)



Похоже на дубликат:

Как получить путь к работающему файлу JAR?< /а>

Если ваш файл jar находится в вашей файловой системе, начните здесь, чтобы получить текущий путь:

ClassLoader.getSystemClassLoader().getResource(".").getPath();
person Abdullah Jibaly    schedule 18.11.2011
comment
это возвращает не путь к .jar, а путь к ресурсу, который необходимо дополнительно обработать, чтобы получить путь к файлу. Также это не будет работать, если классы загружаются откуда-то, кроме файловой системы. Файл, который он хочет, находится не в .jar, а рядом с ним! - person ; 19.11.2011
comment
На самом деле код, который вы разместили, выдает NullPointerException с "." в .getResource() - person ; 19.11.2011
comment
Нет, у меня работает. Я тестировал его на Mac OS Lion (JDK 1.6) и Windows 7 (JDK 1.7), без исключения NullPointerException и дал мне правильный путь к файлу jar. - person Abdullah Jibaly; 20.11.2011
comment
В Windows 7 JDK 1.6 он выдает NullPointerException при запуске из командной строки и из Проводника, а также при запуске из IntelliJ. - person ; 20.11.2011
comment
Только что установил JDK 1.6 в Windows 7, и это тоже работает. Не знаете, что не так с вашей средой, может быть, проблемы с classpath? - person Abdullah Jibaly; 21.11.2011