#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
.