FileNotFoundException при работе в качестве Jar - Java - PullRequest
1 голос
/ 27 марта 2012

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

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

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

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

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

java -jar theJar.jar     

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

java -jar test/theJar.jar 

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

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

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

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

0 голосов
/ 27 марта 2012

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

...