Почему новый файл (путь) не работает, когда я запускаю свое приложение из jar? - PullRequest
2 голосов
/ 15 февраля 2012

Почему new File(path) не работает при запуске приложения из jar?Как я должен изменить это?Теперь я получаю исключение FileNotFound, когда мое приложение пытается загрузить файл.

final File file = new File("src/main/resources/maps/ParcelsCountyRDMFinal5.shp");

Ответы [ 3 ]

2 голосов
/ 15 февраля 2012

Если jar создан правильно, скажем, с помощью Maven, файлы ресурсов идут рядом с файлами классов. Это выглядит примерно так:

myapp.jar
 |
 +--- com
 |     +---mycompany
 |            +-- FileOpsClass
 |
 +--- maps
        +-- fileToRead

вы можете зайти в каталог и получить доступ к fileToRead, например, для приведенной выше структуры:

  final File file = new File("../../maps/ParcelsCountyRDMFinal5.shp");

или как предложено

  final File file = new File(getClass().getResource("/maps/ParcelsCountyRDMFinal5.shp"));
1 голос
/ 15 февраля 2012

При запуске eclipse текущему рабочему каталогу присваивается каталог проекта.Следовательно, относительный путь работает.Поскольку файл также заархивирован в банку, лучше использовать InputStream вместо файла.

InputStream in = this.getClass().getResourceAsStream("/resources/maps/ParcelsCountyRDMFinal5.shp");
1 голос
/ 15 февраля 2012

Если он уже находится в classpath, вы можете получить его так:

File file = new File(getClass().getResource("Relative_Path_From_This_Class_To_YourFileName").getPath());
...