微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 docker 容器上托管 JavaFX 项目

如何解决在 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 举报,一经查实,本站将立刻删除。