|
|
|
Программа не видит properties-файл при её запуске двойным кликом
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Написал гуишное приложение (на свинге). Приложение работает с базой данных. Настройки для подключения к базе данных храню в проперти-файле. Кладу его в корень проекта (в IDEA). Путь прописываю так: Код: java 1. В ИДЕИ всё работает, файл подцепляется, с базой устанавливается соединение, и в общем всё нормально. Как создаютджар-ник в ИДЕИ и кладу его в любую папку, а рядом кладу этот пропертис-файл, то при запуске программы двойным кликом, она не находит этот файл. Пробую это в линуксе убунту. Кстати, если запускать программу из командной строки, то она находит этот файл. Также ставил на виртуальную машину виндоуз 7, и там пробовал запустить программу двойным кликом. Всё работает, программа находит файл. Из командной строки тоже всё работает. Пробовал разные варианты: дописывал в начале пути к файлу new File("") + File.separator, дописывал System.getProperty("user.dir"). Ничего не помогает. Свойство user.dir при запуске программы двойным кликом возвращает домашний каталог пользователя. Хотелось бы, чтобы программа брала файлом, лежащий рядом с ней (в той же папке). Вообще, можно как-то получить каталог, в котором лежит программа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2017, 14:37 |
|
||
|
Программа не видит properties-файл при её запуске двойным кликом
|
|||
|---|---|---|---|
|
#18+
MaxLichХотелось бы, чтобы программа брала файлом, лежащий рядом с ней (в той же папке). Вообще, можно как-то получить каталог, в котором лежит программа? Всё верно. java.io.File резолвит относительные пути относительно user.dir. А user.dir может быть абсолютно любым в зависимости от способа запуска. Поэтому вариантов решения есть несколько: 1. Код: java 1. 2. batch/schell скрипты, которые переходят в каталог где находится скрипт и запускают jar оттуда, таким образом user.dir всегда нужный. 3. Launch4j ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2017, 14:51 |
|
||
|
Программа не видит properties-файл при её запуске двойным кликом
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, 1-ое решение мне уже подсказали. 2-ое - не очень красивое. По 3-ему: эта программа же только для винды, икзешники делать из джар? (Если что мне нужно, чтобы работало на любых системах, потому что я не знаю, где это будет запускать пользователь (это может быть винда, убунту, или серверная версия винды или линукса/юникса)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2017, 15:55 |
|
||
|
Программа не видит properties-файл при её запуске двойным кликом
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Ещё один вопрос. На другом форуме предложили решение, похожее на первое, но не могу понять, зачем туда вставили ещё одну строчку. Можете сказать? Решение такое: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Вопрос касается строчки, помеченной (1). Убрал её, и всё работает без неё. По-быстрому глянул, ничего такого не нашёл, вроде как и нужна. Так что она делает? Зачем она нужна? Может её, правда, нафиг убрать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2017, 16:03 |
|
||
|
Программа не видит properties-файл при её запуске двойным кликом
|
|||
|---|---|---|---|
|
#18+
MaxLich1-ое решение мне уже подсказали. И? Это значит нужно было догадаться и не писать о нём? MaxLich2-ое - не очень красивое. Нормальное. Многие пользуются. MaxLichПо 3-ему: эта программа же только для винды, икзешники делать из джар? (Если что мне нужно, чтобы работало на любых системах, потому что я не знаю, где это будет запускать пользователь (это может быть винда, убунту, или серверная версия винды или линукса/юникса)) http://launch4j.sourceforge.net/ The wrapped program works on all Windows platforms, Launch4j works on Windows, Linux and Mac OS X. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2017, 16:05 |
|
||
|
Программа не видит properties-файл при её запуске двойным кликом
|
|||
|---|---|---|---|
|
#18+
MaxLichВопрос касается строчки, помеченной (1). Убрал её, и всё работает без неё. По-быстрому глянул, ничего такого не нашёл, вроде как и нужна. Так что она делает? Зачем она нужна? Может её, правда, нафиг убрать? Ну, задумка в том что в URL всегда однозначный символ-разделитель, а в файловой системе может быть прямой слэш, обратный и даже символ йены и перечеркнутое W. Но на самом деле оно бестолковое по двум причинам. 1. https://docs.oracle.com/javase/7/docs/api/java/io/File.html#File(java.net.URI) 2. Операционные системы, обычно, понимают слэш и конвертируют в текущий разделитель прозрачно без особых усилий со стороны разработчика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2017, 16:11 |
|
||
|
Программа не видит properties-файл при её запуске двойным кликом
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Про launch4j: авторLaunch4j wraps jars in Windows native executables and allows to run them like a regular Windows program То есть, как я понял, она делает икзешники для винды из джаров, но сама работает не только на винде, но также и на линуксе и маке. А вообще, пока остановился на первом решении. Его ещё хорошенько протестирую, и скорее всего оставлю. Кстати, а знаете, как сделать, чтобы с этим решением работало и в IntelliJ IDEA? Там он берёт папку в которой лежит class-файл. Наверно, нет такого универсального решения, чтобы ещё и в ИДЕИ работало!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2017, 16:26 |
|
||
|
Программа не видит properties-файл при её запуске двойным кликом
|
|||
|---|---|---|---|
|
#18+
Ладно, сделал пока такое решение (метод): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. На вход кидаю класс, где лежит этот метод. В итоге получаю папку, где лежит джар-ник программы. Тестировал на винде (семёрке) и на линуксе (убунту) - всё работает. Такое решение и оставлю. (правда, в ИДЕИ это решение не работает, поэтому пока пользую комментированием-раскомментированием строк) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2017, 16:58 |
|
||
|
Программа не видит properties-файл при её запуске двойным кликом
|
|||
|---|---|---|---|
|
#18+
MaxLich(правда, в ИДЕИ это решение не работает, поэтому пока пользую комментированием-раскомментированием строк) Ну, есть всегда вариант проверять наличие файла и читать относительно user.dir. У меня, правда, с таким подходом комедный случай был, когда QA себе скопировал на рабочий стол конфиги зачем-то и они оттуда подчитываться начали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2017, 17:20 |
|
||
|
Программа не видит properties-файл при её запуске двойным кликом
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Да, вроде бы неплохое решение. Надо будет попробовать. (Хотя менять код из-за одной ИДЕИ, это мне кажется, не очень разумно; но в данном случае, мне всё равно будет так удобнее.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2017, 17:42 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39535479&tid=2122538]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
136ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 423ms |

| 0 / 0 |
