глюонный javafx на raspberry pi 4

#javafx #raspberry-pi4 #gluon

Вопрос:

Я пою инструкции с веб-сайта gluon для запуска javafx с использованием openjdk11 и gluon javafx17 согласно этой ссылке. я использую официальный рабочий стол rasbian buster.

 https://docs.gluonhq.com/#_setting_up_the_raspberry_pi_4 
 

я экспортирую ENABLE_GLUON_COMMERCIAL_EXTENSIONS=true и устанавливаю его в .bashrc
export ENABLE_GLUON_COMMERCIAL_EXTENSIONS=true
и перезагрузил мою машину, но все равно удаленный запуск из netbeans отображается как под :-

 Gluon Commercial Features not unlocked.
Set the environment variable ENABLE_GLUON_COMMERCIAL_EXTENSIONS and
check the file <sdk>/legal/javafx.graphics/gluon.md for license information.
[GluonDRM] eglSwapBuffers ok
[GluonDRM] realswapbuffer called
[GluonDRM] eglSwapBuffers ok
 

и программа останавливается здесь. . .. .
пожалуйста, обратите внимание, что sudo-E не работает для меня, я использую только sudo в качестве префикса exec в удаленной платформе netbeans. мои параметры виртуальной машины, как показано ниже :-

 -Dmonocle.platform=EGL -Dembedded=monocle -Dglass.platform=Monocle -Degl.displayid=/dev/dri/card0 -Dmonocle.egl.lib=/home/pi/fx/lib/libgluon_drm-1.1.3.so --module-path /home/pi/fx/lib --add-modules javafx.controls,javafx.fxml -cp dist/.
 

Спасибо

Комментарии:

1. Использование -E именно для доступа к переменным env. , определенным в вашем файле .bashrc, при запуске sudo . Не можете ли вы изменить префикс exec на sudo -E ?

2. env ==> показывает все переменные окружения, включая ENABLE_GLUON_COMMERCIAL_EXTENSIONS=true sudo env ==>> ENABLE_GLUON_COMMERCIAL_EXTENSIONS=true ОТСУТСТВУЕТ sudo-E env ==>>> ENABLE_GLUON_COMMERCIAL_EXTENSIONS=true присутствует в выводе echo $ENABLE_GLUON_COMMERCIAL_EXTENSIONS возвращает true теперь я знаю основную причину и пытаюсь выяснить, как использовать sudo-E в моей системе……….когда я делаю man sudo на своей машине , он не показывает никакой ведьмы для-E , у него есть-h-K-i-V-t, но нет-E

Ответ №1:

От man sudo , -E является кратчайшим путем --preserve-env :

Указывает в политике безопасности, что пользователь желает сохранить существующие переменные среды.

Удаленная платформа NetBeans позволяет использовать префикс exec, поэтому вы можете добавить sudo его перед запуском java ... . Однако он допускает только одно слово. Использование sudo -E в качестве префикса не сработает, так как созданная командная строка будет выглядеть так:

 cmd : cd '/home/pi/NetBeansProjects/HelloFX'; 'sudo -E' 'java'...
 

и это приводит к ошибке:

 bash: sudo -E: command not found
 

Таким образом, возможным исправлением было бы добавление export ENABLE_GLUON_COMMERCIAL_EXTENSIONS=true в общесистемный профиль , например /etc/environment , который представляет собой файл конфигурации всей системы, используемый всеми пользователями и созданный с правами администратора.

Я проверил это, и локально я вижу:

 $ sudo echo $ENABLE_GLUON_COMMERCIAL_EXTENSIONS
true
 

бит при запуске с удаленной платформы через SSH он, похоже, недоступен.

Кроме того, как вы прокомментировали, sudo env этого не видно.

Поэтому , хотя может быть правильный способ сделать это (возможно /etc/sudoers , но я не эксперт по Linux), есть другая альтернатива: удалить использование sudo .

Если вы удалите префикс exec sudo с удаленной платформы, теперь вы сможете запускать приложение удаленно. Однако вы увидите:

 Udev: Failed to write to /sys/class/input/mice/uevent
    Check that you have permission to access input devices
Udev: Failed to write to /sys/class/input/event0/uevent
    Check that you have permission to access input devices
 

JavaFX нуждается в доступе к входным файлам для событий мыши, и для этого вам нужно разрешение, так sudo что это просто быстрый способ его получить.

Однако есть и другой способ предоставить разрешение для входных файлов без использования sudo : измените правила разрешений в /etc/udev/rules.d/99-com.rules .

Отредактируйте файл:

 $ sudo nano /etc/udev/rules.d/99-com.rules
 

и добавьте в конце:

 SUBSYSTEM=="input*", PROGRAM="/bin/sh -c '
 chown -R root:input /sys/class/input/*/ amp;amp; chmod -R 770 /sys/class/input/*/;
'"
 

затем сохраните, выйдите и, на всякий случай, перезагрузитесь.

Теперь вы должны иметь возможность запускать свое приложение из NetBeans по SSH, без sudo и с помощью env .bashrc .