如何解决在 docker 容器上托管 JavaFX 项目
我在 docker 容器上托管 JavaFX GUI 应用程序时遇到问题。我的 JavaFX GUI 应用程序位于一个可执行的 jar 文件中:start.jar
这是我的 dockerfile:
FROM openjdk:11-jre-slim
RUN mkdir logs
RUN apt-get update && apt-get install libgtk-3-0 libglu1-mesa xvfb -y && apt-get update
RUN apt-get install xvfb
copY library/javafx-sdk-11.0.2 javafx-sdk-11.0.2
copY start.jar start.jar
ENV disPLAY=:99
copY run.sh /run.sh
RUN chmod a+x /run.sh
CMD /run.sh
还有run.sh
:
#!/bin/bash
rm /tmp/.X99-lock #needed when docker container is restarted
Xvfb :99 -screen 0 640x480x8 -nolisten tcp &
java --module-path javafx-sdk-11.0.2 -jar start.jar
当我运行 start.jar
应用程序时,出现此错误:
ES2 Prism: Error - GLX extension is not supported
GLX version 1.3 or higher is required
如何更新到正确的 GLX 版本,以便在 docker 上成功运行我的 JavaFX GUI 应用程序?
解决方法
您可以尝试禁用硬件图形加速依赖项,方法是为 Prism
设置软件管道。这可以通过设置 param -Dprism.order=sw
来完成。
所以 run.sh
中的 java 命令应该改为:
#!/bin/bash
rm /tmp/.X99-lock #needed when docker container is restarted
Xvfb :99 -screen 0 640x480x8 -nolisten tcp &
java -Dprism.order=sw --module-path javafx-sdk-11.0.2-jar start.jar
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。