![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
jhane |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 13.8.2006 Где: Иерусалим Репутация: нет Всего: нет |
При запуске приложения через jar, main class не видит те файлы Property которые он должен поднять (т.е. проверка if (propertiesFile.exists()) проваливается). В самом архиве они находятся, я проверяла.
Если запустить тоже приложение java mainClass из терминала, все бежит нормально. Архив создан средствами Eclipse. |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Покажите код, как вы к этим файлам общаетесь. Обычно это делается примерно следующим образом:
|
|||
|
||||
jhane |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 13.8.2006 Где: Иерусалим Репутация: нет Всего: нет |
|
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
А что это за класс такой - PropertyFiles? Я его в стандартной библиотеке не нашел...
Вообще говоря, есть предположение, что файл property вы пытаетесь прочитать как обычный файл, но при работе с ресурсами упакованными в jar-файл это не прокатит. Нужно использовать способ приведенный мною выше. |
|||
|
||||
jhane |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 13.8.2006 Где: Иерусалим Репутация: нет Всего: нет |
Это мой класс. Было:
заменила на ваш код и убрала проверку существования файла
результат тотже. не может открыть файл. Добавлено через 7 минут и 22 секунды А как тогда проверяют наличие файла (не обязательно property) в архиве? Не надеятся же всегда на его целостность. |
||||||
|
|||||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Вы загружаете файл используя FileInputStream, а так не нужно делать. Нужно через ClassLoader.getSystemResourceAsStream() файл грузить, тогда он из jar-а берется. Приведите пожалуйста получившийся код.
Проверять не вернул ли ClassLoader.getSystemResourceAsStream() null. |
|||
|
||||
jhane |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 13.8.2006 Где: Иерусалим Репутация: нет Всего: нет |
|
||||
|
|||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
код вроде правильный, если сейчас не работает, то проверьте правильность пути и имени файла.
|
|||
|
||||
jhane |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 13.8.2006 Где: Иерусалим Репутация: нет Всего: нет |
Я проверяла. Полный путь я нигде ни писала, только сокращенный, поэтому тут ошибки быть не может. Архив переименовала в зип и открыла. Все файлы на месте. Переименовала обратно и запустила главный класс из терминала, работает.
Единственное что приходит на ум, jar игнорирут classPath (согласно тому что я нарыла в нете), может в этом проблема? но тогда бы он не находил какую либо библиотеку а ни файл... |
|||
|
||||
powerOn |
|
||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Вот структура jar файла:
![]() Вот код:
Содержимое pfile.properties:
Возьмите это за основу. jar прикреплен. (билд делал используя jdk1.6u1) |
||||
|
|||||
jhane |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 13.8.2006 Где: Иерусалим Репутация: нет Всего: нет |
Скопировала твой пример. Тоже не поднимается.
Добавлено через 12 минут и 3 секунды Сори, твой пример прошел. Теперь буду пытать свой. Спасибо Присоединённый файл ( Кол-во скачиваний: 12 ) ![]() |
|||
|
||||
jhane |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 13.8.2006 Где: Иерусалим Репутация: нет Всего: нет |
Ваш код работает если файл уже существут. Я поставила провеку как вы рекомендовали на null, но программа вылетает еще до проверки, на load.
до этого тут я тоже проверяла с File.exists() . в апликации это работала, а в jar соответственно нет... P.S. как переписать
|
||||
|
|||||
powerOn |
|
||||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Естественно если файл существует. А как же он может не существовать? Это же ресурс. Если его изначально нет, то зачем к нему обращаться? Здесь несколько другая идеология.
Я вам советовал другое:
а вы проверяете:
|
||||||
|
|||||||
jhane |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 13.8.2006 Где: Иерусалим Репутация: нет Всего: нет |
||||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
![]() ИМХО, следует рассматривать ресурсы как внутрипрограммные данные, которые не подвергаются изменениям во время её выполнения. Если данные должны меняться и при этом сохраняться между запусками программы, то следует использовать внешние файлы. Это сообщение отредактировал(а) powerOn - 8.5.2007, 16:40 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |