Я создал jar-файл своего приложения, чтобы пользователи могли запускать его из проводника Windows. Он загружает файл JSON в свой собственный рабочий каталог для некоторых настроек (используя путь «.\config.json»). Однако, когда я запускаю его из файла jar из проводника Windows, он не может найти файл конфигурации, в то время как запуск того же файла jar из командной строки работает. Я предполагаю, что это связано с тем, что проводник устанавливает рабочий каталог для чего-то другого, кроме папки jar. На что он настроен? (И как я могу найти собственную папку jar?)
Каков рабочий каталог по умолчанию для jar, запущенного из проводника Windows?
comment
Если вы можете изменить эту банку, вы можете использовать текущий каталог, используя это: java-forums.org/new-java/ и проверьте
- person dbf   schedule 19.11.2011
Ответы (2)
Почему бы не попробовать распечатать System.getProperty("user.dir");
< /a> и выяснить, что думает приложение?
user.dir User's current working directory
используйте следующее, чтобы получить PARENT
того, откуда вы .jar
загружаетесь, и это то, что вам нужно
import java.io.*;
public class Main
{
public static void main(final String[] args) throws IOException
{
final File file = new File(".");
System.out.println("file = " + file.getAbsoluteFile().getParent());
}
}
Вывод, когда я запускаю его из командной строки или дважды щелкаю в проводнике Windows:
file = c:\Users\Jarrod Roberson\Projects\SwingJarFinder
person
Community
schedule
18.11.2011
Это говорит о том, что он думает, что работает из system32.
- person Orange; 19.11.2011
Похоже на дубликат:
Как получить путь к работающему файлу JAR?< /а>
Если ваш файл jar находится в вашей файловой системе, начните здесь, чтобы получить текущий путь:
ClassLoader.getSystemClassLoader().getResource(".").getPath();
person
Abdullah Jibaly
schedule
18.11.2011
это возвращает не путь к .jar, а путь к ресурсу, который необходимо дополнительно обработать, чтобы получить путь к файлу. Также это не будет работать, если классы загружаются откуда-то, кроме файловой системы. Файл, который он хочет, находится не в
.jar
, а рядом с ним!
- person ; 19.11.2011
На самом деле код, который вы разместили, выдает
NullPointerException
с "."
в .getResource()
- person ; 19.11.2011
Нет, у меня работает. Я тестировал его на Mac OS Lion (JDK 1.6) и Windows 7 (JDK 1.7), без исключения NullPointerException и дал мне правильный путь к файлу jar.
- person Abdullah Jibaly; 20.11.2011
В Windows 7 JDK 1.6 он выдает
NullPointerException
при запуске из командной строки и из Проводника, а также при запуске из IntelliJ.
- person ; 20.11.2011
Странно, может что-то не так с тем, как вы создаете банку? Попробуйте тот, который я тестировал: temp-share.com/show/gFHKd9f6Y
- person Abdullah Jibaly; 21.11.2011
Только что установил JDK 1.6 в Windows 7, и это тоже работает. Не знаете, что не так с вашей средой, может быть, проблемы с classpath?
- person Abdullah Jibaly; 21.11.2011