Преобразование URL-адреса Java в допустимый путь к файлу в Linux - PullRequest
0 голосов
/ 26 сентября 2011

Хорошо. Я разрабатываю в Linux программу Eclipse, которая должна читать текстовый файл. Идея состоит в том, чтобы JAR и текстовый файл находились в одной папке. Итак, я получаю путь к текстовому файлу следующим образом:

Client.class.getClassLoader().getResource("Client.class");

Это правильно возвращает путь, и я добавляю имя файла и получаю следующий путь:

/home/marquinio/workspace/my_project/info.txt

Проблема в том, когда я экспортирую свой проект в исполняемый файл JAR. JAR не может прочитать файл. Я дважды проверил, и все выглядит хорошо. Единственная проблема, которую я вижу, состоит в том, что теперь к пути добавлен какой-то «file:» в начале, например:

file:/home/marquinio/workspace/my_project/info.txt

, вероятно, поэтому я получаю исключение FileNotFoundException. JAR и текстовый файл находятся в одной папке.

Кто-нибудь знает, как это исправить? Почему Java ведет себя по-разному между Eclipse и выполнением JAR в командной строке? Есть ли замена для "... getResource (...)", предоставляемого Java без этого "файла:"?

ПРИМЕЧАНИЕ: этот JAR-файл также должен быть совместим с окружением Windows. Все еще нужно проверить это.

Заранее спасибо.

1 Ответ

1 голос
/ 26 сентября 2011

Ресурс, на который вы ссылаетесь, не обязательно является файлом в файловой системе.Почему бы не использовать ClassLoader#getResourceAsStream()?Не вдаваясь в подробности, я думаю, что разное поведение, которое вы видите, заключается в том, что в каждом приведенном выше случае используется разный загрузчик классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...