В настоящее время я пишу игру под названием Legend of Zork (название разработки), в основном для того, чтобы держать меня занятым написанием кода и изучением Java на более глубоком уровне. Однако я застрял в конкретной задаче. Я хочу, чтобы иметь возможность копировать содержащую папку в любом месте моего компьютера, чужого компьютера или даже флеш-накопителя и работать. Когда я компилирую программу в Jar, мне нужно будет указать путь к папке, чтобы код мог использовать нужные файлы (например, музыку или электронные таблицы). Я попытался сделать следующее:
String dir = System.getProperty("user.dir") + "/resources/";
, который даст правильный путь в Eclipse («/ media/MOTHLACHAIN / LegendOfZork/resources /», который является флеш-накопителем, который я использую в качестве рабочего пространства) и работает отлично, но когда я построить и запустить банку, она не будет работать из-за FileNotFoundException. В терминале, набрав «java -jar LegendOfZork.jar», который работает, если я не включаю класс, ссылающийся на файл, говорит, что он ищет «/home/viktor/resources/Weapons.xls», когда он должен выглядеть для «/home/viktor/LegendOfZork/resources/Weapons.xls» или при работе с моего рабочего стола следует искать «/home/viktor/Desktop/LegendOfZork/resources/Weapons.xls» и так далее. иерархии папок моей программы является:
1. LegendOfZork
- аудио
- музыка
- звучит
- бен
- ресурсы
Как получить местоположение папки?
Папка LegendOfZork будет где файл банка содержится, где бы я не захотел поместить программу, и ресурсы будут там, где я хотел бы получить доступ к электронной таблице, например.
Любая помощь будет высоко оценена. Большое спасибо вам за продвинутый!
Относительные пути работают на основе каталога, из которого вы запускали Java с, в вашем случае это будет ~. Попробуйте сменить каталоги на/home/viktor/Desktop/LegendOfZork и запустить Jar напрямую (java -jar LOZs.jar), предполагая, что мое понимание структуры вашего каталога верное. – MadProgrammer
Не беспокойтесь, мне потребовалось время, чтобы понять это;) – MadProgrammer