Как настроить DISPLAY для запуска Java JAR Swing Executable из Init.d

Мне нужно запустить исполняемый файл Java JAR Swing GUI в дистрибутиве Raspbian Wheezy Debian внутри устройства ARM во время загрузки.

Я следую этому как ссылка с myapp , myapp-start.sh и myapp-stop.sh , и это с возможными решениями (и другими более похожими). Но здесь нет ссылки на переменную DISPLAY.

Я проверил множество альтернатив, с

Пробовал и не применимо Опции :

  • /usr/bin/java -jar -Djava.awt.headless=true $myapp.jar
  • unset DISPLAY (внутри myapp-start.sh , выше предложения java -jar )

Ошибки:

  • java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operation which requires it.

myapp-start.sh варианты (внутри myapp-start.sh , над предложением java -jar ):

  • export DISPLAY=:0
  • export DISPLAY=:0.0
  • export DISPLAY=localhost:0.0

Ошибки:

  • Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable
  • Client is not authorized to connect to ServerException in thread stack

Неисправленные варианты

  • ssh - X localhost : Как мне сделать ssh на сервере X11 ? Где я должен выполнить это в процессе init.d ?. Это стандартное решение для запуска программы Java с графическим интерфейсом ?.
  • USER=root внутри myapp-start.sh : myapp-start.sh останавливается и запрашивает пароль. Такой умный, процесс не начинается.
  • Если какой-либо из вышеперечисленных вариантов должен быть включен в другое место, кроме кода myapp-start.sh ? Где?

Не должно быть проще запускать один кусок кода при запуске ?.

Любой другой вариант будет оценен.

EDIT 2015-04-12

Новые параметры

В следующих вариантах я добавляю код внутри этого местоположения /etc/xdg/lxsession/LXDE-pi/autostart для выполнения после пользовательских журналов pi и запуска X11 (см. Предложение jlliagre ):

  • usr/bin/java -jar /home/pi/Embedded/bin/PowerBar.jar (без амперсанда)
  • export DISPLAY=:0.0 usr/bin/java -jar /home/pi/Embedded/bin/PowerBar.jar (без амперсанда)
  • /bin/bash /home/pi/Embedded/bin/powerbarstart.sh (без амперсанда)

Все они запускают приложение в фоновом режиме, то есть воспроизводится фоновая музыка, а графики доступны только через VNC по адресу :0 (с использованием TightVNC ). В качестве побочного эффекта заставка активируется, и приложение замерзает каждые 60 секунд. Обратите внимание, что это же место также используется для отключения экрана.

Есть ли отсутствующий вариант, или символ, я не включаю ?.

Решение Устройство было настроено как :1.0 вместо :0.0 . Изменение этого на myapp-start.sh решило проблему.

  • Является ли openjdk-r ppa достаточно надежным для установки на сервере?
  • Как найти путь, где установлен jdk?
  • Добавление папки jar-файлов на мой путь
  • Мышь непригодна для использования в Java-программах под Gnome Shell
  • Как заставить aptitude распознавать Oracle Java как допустимую java-зависимость
  • У установки Jre нет файла / usr / bin / java?
  • Инструмент командной строки для мониторинга Java-кучи
  • Как запустить java-приложение после перезагрузки компьютера?
  • One Solution collect form web for “Как настроить DISPLAY для запуска Java JAR Swing Executable из Init.d”

    Если ваше приложение не является интерактивным, вы можете запустить виртуальный сервер X11 и установить переменную DISPLAY для использования вашим приложением.

    Возможные серверы X11, которые можно использовать таким образом:

    • Xvfb
    • Xdummy
    • Xvnc

    Последний позволяет вам позже подключиться для просмотра и взаимодействия с экраном с клиентом VNC (vncviewer).

    Если вы используете малиновый pi (или аналогичный) для автологизации пользователя pi в графической среде, вы можете запустить приложение в качестве пользователя pi и использовать дисплей :0 . Помните, что вы должны убедиться, что X11 завершил запуск, прежде чем делать это.

    Изменить: похоже, что ваша конфигурация запускает сервер Xvnc сначала, когда пользователь pi запускает основной X-сервер фрейма в качестве пользователя root . В этом случае, как вы выяснили, ваше приложение должно быть запущено с root и используя :1 качестве своего дисплея.

    В качестве альтернативы, если вам действительно нужно не запускать приложение один раз во время загрузки, но всякий раз, когда пользователь (обычно pi ) входит в графическую среду, добавьте его в файл rc, применимый к этой графической среде. Например, /etc/xdg/lxsession/LXDE-pi/autostart .

    Interesting Posts

    ssh cant копировать ключ с hamachi

    fcitx не может начать использовать

    Почему копируемый исполняемый файл rm не будет работать на другой Linux-машине?

    Как изменить размер шрифта экрана при использовании виртуальной консоли?

    Подкаталог в / usr / bin действительно запрещен FHS

    Получить ключевые идентификаторы apt и отпечатки пальцев в машиночитаемом формате

    Как понять таблицу разделов на гибридный образ ISO?

    Проблема безопасности в настройке Apache AllowOverride Все настройки

    Могу ли я остановить IPv6 «Router Advertisement», заполняя syslog без отключения IPv6?

    Изменение владельца накопителя NAS

    Двойные внешние мониторы на док-станции Dell E-Port II зеркалируются друг с другом

    Переустановите Debian

    Использовать псевдонимы в качестве пользовательских команд в терминаторе

    После запуска экрана экран, похоже, не работает

    Как добавить строку после n-го появления ключевого слова с помощью sed?

    Linux и Unix - лучшая ОС в мире.