Java图形用户界面Maven项目在码头工人与X11错误

问题描述 投票:2回答:1

我有一个JavaFX Maven项目。运行我运行jar文件,GUI弹开用户。我想从一个码头工人容器中运行它。我使用Ubuntu 16.04。

我不断收到此错误:

例外在线程“AWT-EventQueue的-0” java.awt.HeadlessException异常:无X11 DISPLAY变量设置,但此方案执行它需要它的操作。

这里是(使用here解决方案)我泊坞文件。

FROM docker.io/java as firstStage
WORKDIR /workdir/
RUN /usr/sbin/useradd --comment Developer \
                  --home-dir /home/developer \
                  --non-unique --uid 1000 --user-group --system \
                  --shell /bin/bash developer && mkdir -p /home/developer

RUN chown -R developer:developer /home/developer && mkdir -p /opt/app && chown -R developer:developer /opt/app

RUN echo 'developer ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
USER developer
ENV HOME /home/developer
VOLUME /opt/app

FROM maven:3.5.0-jdk-8
COPY --from=firstStage /workdir/ .
COPY . /
RUN apt-get update && apt-get install -y --no-install-recommends openjfx && rm -rf /var/lib/apt/lists/* && mvn clean install && DISPLAY=localhost:0.0

CMD ["java","-jar","/target/CodeDemo-1.0-SNAPSHOT.jar"]

我已经通过很多其他的答案看这个问题,这里是还有什么我已经试过: 与-Djava.awt.headless=true运行CMD。 试图在其中运行在容器内的“XAuth加上”做方案here。但XAUTH“未找到”。所以我尝试添加RUN sudo apt-get install xauth到Dockerfile。当我试图建立,我得到了一个错误说XAUTH没有被发现。我做了x11-apps同样的事情。

我想,也许它不会安装,因为它可能不是我的主机(只是一个随机猜测)上找到,但我可以在我的主机上运行XAUTH。

唯一的其他解决方案我见过参与腻子和ssh。我只是想在我的电脑上运行的泊坞容器,而不是ssh到另一个。我也看到了有关虚拟化的一些答案。我必须创建一个完整的虚拟机来运行一个程序?还是我失去了一些东西?

任何人有什么建议?

java maven docker x11
1个回答
1
投票

这是绝对有可能。给定的错误消息还算是不错的。您需要设置X11 DISPLAY变量。

你的问题的解决方案可能是因为添加简单

-e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix

docker run命令。您可能需要运行

sudo xhost +

在此之前,为了让你的主机的XServer连接。

您还可以看看下面的博客文章,谁更详细地解释这一点:

如果您还需要实际的图形支持,例如OpenGL的,看看https://github.com/NVIDIA/nvidia-docker

© www.soinside.com 2019 - 2024. All rights reserved.