Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Путь к исполняемому JAR файлу  (Прочитано 480 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн fed_lviv

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Путь к исполняемому JAR файлу
« : 22 Март 2016, 14:40:19 »
Всем добрый день. На форуме новичок и в Ubuntu тоже. Поэтому сразу извиняюсь, если создал тему не в том разделе.
Написал програмку на джаве. В Windows все хорошо работает. Так как начал сейчас изучать Ubuntu решил попробовать протестить програмку в даной ОС. И тут "увидел" интересные вещи. У меня возле JAR файла есть файлик с свойтвами для програмки. Так как пользователь может данные свойства изменять, я этот файл не засовывал в JAR. В виндовс я мог все файлы вместе перемещать в любую директорию и все было хорошо. В Ubuntu если перемещаю в другую директорию (кроме /home/user) программа завершается аварийно, потому что jar файл не может увидеть файл свойств.После многих попыток увидел что мой файл JVM запускает в домашней директории, при том что файл jar на самом деле может быть совсем в другой директории, главное чтоб файл свойств был в домашней директории. Что делать подскажите, пожалуйста?

Оффлайн Heider

  • Старожил
  • *
  • Сообщений: 1037
    • Просмотр профиля
Re: Путь к исполняемому JAR файлу
« Ответ #1 : 22 Март 2016, 14:59:12 »
Не совсем понятно, что именно Вы хотите сделать. Куда именно Вам нужно переместить файл?

Оффлайн p1x3l_

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: Путь к исполняемому JAR файлу
« Ответ #2 : 22 Март 2016, 15:01:27 »
Мб в правах дело?

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7083
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: Путь к исполняемому JAR файлу
« Ответ #3 : 22 Март 2016, 15:01:43 »
Хранить свои настройки в /home/username/.config/Your App Name как один из вариантов. Как другой вариант - писать ярлык запуска к своей программе, который будет передавать в неё путь к текущей директории. Скорее всего, дело в том, что Linux вовсе не обязан сообщать программе, где она находится.
« Последнее редактирование: 22 Март 2016, 15:14:04 от peregrine »

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4073
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Путь к исполняемому JAR файлу
« Ответ #4 : 22 Март 2016, 15:13:28 »
fed_lviv, 1) сделать путь абсолютным
2) запускть программу из папки с конфигом. К примеру такjava -jar ../../path/to/file.jar
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн fed_lviv

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Re: Путь к исполняемому JAR файлу
« Ответ #5 : 22 Март 2016, 15:17:23 »
Как другой вариант - писать ярлык запуска к своей программе, который будет передавать в неё путь к текущей директории.
Вот только так и получается:
cd pathToDir
java -jar My.jar

java -jar pathToDir/My.jar -заканчивается аварийно програма.

Скорее всего, дело в том, что Linux вовсе не обязан сообщать программе, где она находится.
Ну джаву рекламируют, как кросплатформенную. Например данный метод должен возвращать путь к исполняемому джар файлу:
getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath()
Но к сожалению, в Ubuntu возвращается путь к домашней директории

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7083
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: Путь к исполняемому JAR файлу
« Ответ #6 : 22 Март 2016, 15:24:05 »
fed_lviv, дай минимальный пример своей программы, я попробую сделать скрипт для запуска.

Оффлайн fed_lviv

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Re: Путь к исполняемому JAR файлу
« Ответ #7 : 22 Март 2016, 15:46:26 »
fed_lviv, дай минимальный пример своей программы, я попробую сделать скрипт для запуска.
Вот, сделал .sh:
#!/bin/sh
cd Документы/
java -jar Моя\ программа-1.jar
А .desktop, что-то не получается.

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7083
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: Путь к исполняемому JAR файлу
« Ответ #8 : 22 Март 2016, 16:01:42 »
fed_lviv, посмотри, как это сделано у tor-browser. Осторожно, после первого запуска .desktop изменится.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4073
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Путь к исполняемому JAR файлу
« Ответ #9 : 22 Март 2016, 16:15:35 »
Как другой вариант - писать ярлык запуска к своей программе, который будет передавать в неё путь к текущей директории.
Вот только так и получается:
cd pathToDir
java -jar My.jar

java -jar pathToDir/My.jar -заканчивается аварийно програма.
Где конфиг? В . или в pathToDir?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн fed_lviv

  • Автор темы
  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Re: Путь к исполняемому JAR файлу
« Ответ #10 : 22 Март 2016, 16:42:22 »
В pathToDir файл с конфигами - metadata.properties и файл - My.jar.
Условно в папке Х находятся два файла А (My.jar) и В (metadata.properties). Поэтому я перехожу в папку Х и только потом запускаю файл А, и тогда JVM видит что файл А запустился в директории Х. Поэтому относительного файла А ищет файл В.

 

Страница сгенерирована за 0.063 секунд. Запросов: 25.