DevelNext — Рабочие директории

Написал небольшую программку, которая хранит конфиги рядом с исполняемым файлом, добавляю её в автозагрузку и… конфигов она не видит

Путь к текущей директории определяется простым кодом:

У jphp есть свои функции для работы с файловой системой, но результат тот же:

Собрал тестовый проект, который показывает текущее расположение программы, кидаю на диск D, запускаю:
Запуск с диска D

Отлично, тут всё верно. Теперь пробую запустить из командной строки (так же программа будет запускаться из автозапуска)

результат
2cmd
Т.к. явно не была указана рабочая директория, по умолчанию была выбрана домашняя папка пользователя (для windows — %userprofile%).

Чтоб не зависеть от рабочей директории, можно использовать параметр «java.class.path«, в котором хранятся пути к библиотекам java и архивам jar.
Получить этот путь можно таким образом:

Если запустить собранный проект, всё отлично
2016-08-12

Если же запустить проект в DevelNext:
2016-08-12-2

Увы, не то, что мы ожидали увидеть. Т.к. программа не собрана, в «java.class.path» находятся отностиельные пути к необходимым библиотекам, родительская директория этих библиотек совпадает с директорией проекта, и поэтому от использования «java.class.path» отказываться не будем.

На основе всего этого получилась функция (нагло спёртая с форума java и переделанная под jPHP):

Результат — то, что надо:


Если что, решение кроссплатформенное
Проект: http://develnext.org/project/rlmrfCnEBr

Добавить комментарий

Ваш e-mail не будет опубликован.