首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盆子pi 4上的gluon javafx

覆盆子pi 4上的gluon javafx
EN

Stack Overflow用户
提问于 2021-04-17 02:56:01
回答 1查看 75关注 0票数 1

根据这个链接,我从gluon网站上听到了使用openjdk11和gluon javafx17运行javafx的说明。我正在使用官方的rasbian buster桌面。

代码语言:javascript
复制
https://docs.gluonhq.com/#_setting_up_the_raspberry_pi_4 

我确实导出了ENABLE_GLUON_COMMERCIAL_EXTENSIONS=true并在.bashrc export ENABLE_GLUON_COMMERCIAL_EXTENSIONS=true中设置了它,并重新启动了我的计算机,但仍然从netbeans远程运行,如下所示:-

代码语言:javascript
复制
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对我不起作用,我在netbeans远程平台中只使用sudo作为exec前缀。我的虚拟机选项如下:-

代码语言:javascript
复制
-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/.

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-04-17 19:17:52

man sudo中,-E--preserve-env的快捷方式

向安全策略指示用户希望保留其现有环境变量。

NetBeans remote平台允许使用exec前缀,因此您可以在运行java ...之前添加sudo。但是,它只允许一个单词。使用sudo -E作为前缀将不起作用,因为创建的命令行将如下所示:

代码语言:javascript
复制
cmd : cd '/home/pi/NetBeansProjects/HelloFX'; 'sudo -E' 'java'...

这就抛出了错误:

代码语言:javascript
复制
bash: sudo -E: command not found

因此,一种可能的修复方法是将export ENABLE_GLUON_COMMERCIAL_EXTENSIONS=true添加到系统范围的配置文件中,如/etc/environment,这是一个由所有用户使用的系统范围的配置文件,并使用管理员权限创建。

我已经测试过了,在本地我可以看到:

代码语言:javascript
复制
$ sudo echo $ENABLE_GLUON_COMMERCIAL_EXTENSIONS
true

位当通过SSH从远程平台运行时,它似乎无法访问。

此外,正如您所评论的,sudo env没有显示它。

因此,虽然有一种合适的方法可以做到这一点(也许是/etc/sudoers,但我不是Linux专家),但还有一种不同的选择:去掉sudo

如果您从远程平台删除exec前缀sudo,您现在应该能够远程运行应用程序。但是,您将看到:

代码语言:javascript
复制
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中修改权限规则。

编辑文件:

代码语言:javascript
复制
$ sudo nano /etc/udev/rules.d/99-com.rules

并在末尾添加:

代码语言:javascript
复制
SUBSYSTEM=="input*", PROGRAM="/bin/sh -c '\
 chown -R root:input /sys/class/input/*/ && chmod -R 770 /sys/class/input/*/;\
'"

然后保存,退出,以防万一,重新启动。

您现在应该能够通过SSH从NetBeans运行您的应用程序,而不需要sudo,并且可以从.bashrc运行您的环境。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67130759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档