Рейтинг:0

как запустить .war с java для выполнения внутри каталога с ярлыка на рабочем столе

флаг ng

Это мой случай. У меня есть .war, который я запускаю с помощью java, и он работает только внутри своей папки:

компакт-диск /opt/myappdir/
Java -jar myapp.war

Примечание. Это не работает так:

Java -jar /opt/myappdir/myapp.war

Я создал bash-скрипт (sudo /opt/myappdir/run.sh), чтобы запустить эту команду

#!/usr/bin/env bash
компакт-диск /opt/myappdir/
Java -jar myapp.war

Пока все работает. Теперь проблема:

Я хочу запустить его с ярлыка на рабочем столе. Это мой ярлык на рабочем столе для запуска myapp war

[Вход на рабочий стол]
Кодировка=UTF-8
Версия=1.0
Имя=Мое Приложение
Комментарий=Запустить MyApp
Тип = Приложение
Exec=/opt/myappdir/run.sh
Icon=/opt/myappdir/myapp.ico
Путь=/opt/myappdir/
Терминал=ложь

Но с тех пор myapp.war необходимо запустить с помощью sudo и внутри myappdir я изменил свой запустить.ш скрипт следующим образом

#!/usr/bin/env bash
компакт-диск /opt/myappdir/
dir=$(dirname $(readlink -m $BASH_SOURCE))
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY QT_X11_NO_MITSHM=1 java -jar myapp.war

Почему линия с dir=$(dirname $(readlink -m $BASH_SOURCE))?

потому что мне нужно убедиться myapp.war работает внутри myappdir

Почему линия с pkexec?

потому что при двойном щелчке ярлыка на рабочем столе Ява нужно запустить с судо

вне:

Ошибка: невозможно получить доступ к jarfile myapp.war

кто то Здесь предлагает решение аналогичного вопроса, но это не сработало для меня. (Изменение предложения:)

#!/usr/bin/env xdg-открыть
[Вход на рабочий стол]
Версия=1.0
Тип = Приложение
Терминал=ложь
Exec=java -jar 'myapp.war'
Путь=/opt/myappdir/
Имя = мое приложение
Комментарий=myapp
Icon=/opt/myappdir/myapp.ico

как я могу исправить мой запустить.ш скрипт для запуска myapp.war с судо внутри myappdir, и вызвать его с ярлыка на рабочем столе? Спасибо

Обновлять

Согласно тому, что кто-то объясняет ЗДЕСЬ, pkexec не запускается в том же каталоге (я думаю, это причина, по которой он не может найти myapp.war файл). Таким образом, решение может состоять в том, чтобы запустить команду, которая заставит ее войти в каталог для запуска java, но я попытался и потерпел неудачу.

Krackout avatar
флаг it
Как насчет добавления ключа `Path=/opt/myappdir` в файл .desktop? Из спецификации файла рабочего стола относительно ключа пути: «если запись имеет тип Application, рабочий каталог для запуска программы».
acgbox avatar
флаг ng
@Krackout я проверял, и ничего не происходит. то же самое. Проблема по-прежнему `run.sh`

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.