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.