【问题标题】:Unable to run simple HelloWorld JavaFx Application on a Raspberry Pi Model 3 and Java 11无法在 Raspberry Pi Model 3 和 Java 11 上运行简单的 HelloWorld JavaFx 应用程序
【发布时间】:2019-06-20 01:56:28
【问题描述】:

我无法运行 Gluon JavaFx 示例。除了采用较新的 Liberica JDK 11.0.2 而不是预览并将 JAVA_HOME 变量指向相应的目录之外,我完成了描述的所有步骤。

使用以下命令执行演示应用程序:

$JAVA_HOME/bin/java \
 --module-path=/opt/armv6hf-sdk/lib \
 --add-modules=javafx.controls \
 -cp target/classes/ \
 -Dprism.verbose=true \
 -Dembedded=monocle \
 -Dglass.platform=Monocle sample.Main

给我以下输出和错误:

Prism pipeline init order: es2 sw 
Using Double Precision Marlin Rasterizer
Using dirty region optimizations
Using system sized mask for primitives
Not forcing power of 2 sizes for textures
Using hardware CLAMP_TO_ZERO mode
Opting in for HiDPI pixel scaling
Prism pipeline name = com.sun.prism.es2.ES2Pipeline
Loading ES2 native library ... prism_es2_monocle
    succeeded.
GLFactory using com.sun.prism.es2.MonocleGLFactory
Dispman: Cannot open display
* failed to add service - already in use?

任何想法,可能有什么问题?我发现了有关 stackoverflow 的各种提示,例如额外安装以下软件包:

sudo apt install raspberrypi-ui-mods xorg libgtk2.0-0

或使用以下方法进行固件更新:

sudo rpi-update 192

甚至修改/etc/udev/rules.d/99-com.rules 并添加:

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

确实引起了任何变化。

有人知道我缺少什么或可以做些什么来让它运行吗?

【问题讨论】:

  • 你的显示器插上了吗?您是从 SSH 运行还是直接从 Raspberry Pi 运行?你使用 X11 还是命令行?
  • 用 ssh 直接在控制台试了一下...
  • Liberica JDK 已经包含 JavaFX,因此您可以简单地尝试:sudo $JAVA_HOME/bin/java -cp target/classes sample.Main。你能检查一下这是否有效吗?
  • 不幸的是我仍然得到相同的结果:pi@raspberrypi:~/MaryHadALittleLambda $ sudo /opt/jdk-11.0.2/bin/java -cp target/classes sample.MainDispman: Cannot open display* failed to add service - already in use?pi@raspberrypi:~ $ /opt/jdk-11.0.2/bin/java -version openjdk version "11.0. 2-BellSoft" 2018-10-16 OpenJDK Runtime Environment (build 11.0.2-BellSoft+7) OpenJDK Server VM (build 11.0.2-BellSoft+7, 混合模式) pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.14 .79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l GNU/Linux
  • Liberica 也从 X11 运行。尝试运行startx,然后打开终端运行sudo $JAVA_HOME/bin/java -Djavafx.platform=gtk -cp target/classes sample.Main

标签: java raspberry-pi3 gluon openjfx


【解决方案1】:

使用最新的raspbian-stretch 映像并将实际的Liberica JDK 安装在/opt文件夹中。

要在 X11 环境中启动 JavaFx 应用程序,请使用以下标志:

$JAVA_HOME/bin/java -Djavafx.platform=gtk -cp <actual-classpath> <main-class-name>

要通过 SSH 或命令行启动 JavaFx 应用程序:

$JAVA_HOME/bin/java -cp <actual-classpath> <main-class-name>

您可以选择添加这些标志以获得更详细的信息:

-Dprism.verbose=true -Djavafx.verbose=true

【讨论】:

    猜你喜欢
    • 2020-06-19
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多