FileNotFoundException при работе в качестве Jar - Java

Я написал свои java-коды, используя eclipse и iam, читая файл и обрабатывая коды. Ключ key.txt находится в той же папке, что и src.

BufferedReader br= new BufferedReader(new FileReader("KEY.txt"));

Теперь, после того как я скомпилирую флягу, поместите флягу и файл в ту же папку и выполните iam, получая FilenotFoundException. Программа работает, если я запускаю в Eclipse, читая файл отлично.

Файл jar и key.txt всегда должны находиться в одной папке. Пожалуйста, дайте мне знать, как я могу решить эту проблему FilenotFoundException.

2 ответа

Код, который у вас есть, открывает файл в текущем рабочем каталоге, в котором вы начали процесс Java.

Это совершенно не связано с тем, где находится файл jar.

Как вы выполняете файл JAR?

Если файл ключа находится рядом с файлом jar, это должно работать:

java -jar theJar.jar     

Но этого не произойдет (потому что путь к ключу теперь "test/KEY.txt"):

java -jar test/theJar.jar 

Когда вы запускаете программу в Eclipse, текущим рабочим каталогом (обычно) является корневая папка проекта.

Альтернативой для рассмотрения (если файл не нужно редактировать пользователем) является помещение файла ключа в файл jar. Тогда он не потеряется, и вы можете загрузить его через загрузчик классов.

Другим хорошим вариантом является предоставление пользователю пути к файлу через параметр командной строки или системное свойство.

Или создайте сценарий пакетного файла / оболочки, который гарантирует, что вы всегда работаете из правильного каталога.

Я думаю, что вы должны поместить эти файлы в файл класса работающего класса, потому что текущий каталог - это каталог, в котором хранится файл класса, а не исходный файл Java.

Другие вопросы по тегам