Различные относительные пути к файлу во время выполнения в Eclipse и Java

91
11

Я реализовал Java-класс, который обрабатывает файлы.txt-Format по относительным путям. Он хорошо работает во время исполнения в Eclipse. Но если Im выполняет (неизменный) скомпилированный файл в Java JRE вне Eclipse, Im получает java.io.FileNotFoundException.

Я реализовал new File(".").getCanonicalPath() и нашел источник моей проблемы:

Выполнено в Eclipse, я возвращаюсь: C:\Users\xy\git\Project\Project

Выполнено в Java 8 JRE Я возвращаюсь: C:\Users\xy\git\Project\Project\bin

Я думал об обходном пути, но обработка двух разных версий кода для разработки и развертывания кажется ненужным источником ошибок для меня.

Поэтому мой вопрос заключается в том, как устранить проблему. Я бы предпочел намек на то, как перенастроить Eclipse.

Заранее спасибо Threx

спросил(а) 2017-08-16T08:05:00+03:00 3 года, 2 месяца назад
1
Решение
71

Решение заключается в адаптации конфигурации Eclipse.

В разделе Run | Запустить конфигурацию... | slide Аргументы есть запись "Рабочий каталог". По умолчанию установлено значение $ {workspace_loc: ProjectName}. После изменения его в $ {workspace_loc: ProjectName/bin} предупреждения java.io.FileNotFoundException исчезли, и все работает по назначению.

Теперь Eclipse и JRE за пределами Eclipse работают с одним и тем же путем, и не требуется избыточный код с обходными решениями.

ответил(а) 2017-08-16T18:42:00+03:00 3 года, 2 месяца назад
42

Есть много способов:

не помещайте свой текстовый файл в /bin, укажите еще один статический путь загрузить файл в путь к классам используйте комбинацию System.getProperties("user.dir") и оператора if-else use maven, ref: Maven добавляет файл свойств в файл jar

ответил(а) 2017-08-16T08:29:00+03:00 3 года, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема