У многих людей есть проблема, что, когда они начинают с nautilus JAR-приложения, CWD (Current Working Directory) устанавливается в их домашнюю папку (а не в папку в котором находится JAR). Это ошибка в Nautilus, а не Linux.Java + Linux: рабочий каталог - это моя домашняя папка
Если вам известен трюк, чтобы было проще запустить Jar правильно, вместо открытия терминала и вручную введите java -jar myJar.jar
, пожалуйста, разместите его ниже.
Благодаря
Краткий пример кода задачи:
File f = new File("ASimpleTextFile.txt");
System.out.println(f.getAbsolutePath());
В Windows, это печатает: [The Path To The Jar]/ASimpleTextFile.txt
Но в Linux, он печатает: /home/[yourName]/ASimpleTextFile.txt
Это очень плохая идея из-за того, что мы часто используем относительный путь к файлам конфигурации. Таким образом, они не будут найдены, поскольку файл указывает на домашнюю папку.
Каким образом ваша программа Java использует текущий каталог? Вы даже не можете делать 'chdir' в Java, поэтому идея состоит в том, что ваша программа должна быть cdd-agnostic. –
@ Крис: Совсем не так; Я часто использую текущий каталог для записи данных, требуя, чтобы пользователь установил приложение, чтобы иметь текущий каталог, где они хотят записывать данные. –
@Software Monkey: это разумный подход, когда приложение является приложением командной строки. Но для приложения пользовательского интерфейса не должно быть никакой зависимости от текущего каталога (за исключением, может быть, места размещения файлов с открытым файлом или подобных вещей по умолчанию). –