Docker可以运行Java awt(windows操作系统上运行VM virtual box)吗?


解决办法:docker run -ti --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
my_java_app
附带链接:http://fabiorehm.com/blog/2014 ... cker/
2. 1.创建Dockerfile文件
FROM java:7
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
RUN javac -encoding gbk Block1.java
CMD ["java", "Block1"]

2.使用此Dockerfile构建镜像my_java_app:
$sudo docker build -t my_java_app

3.运行此镜像并执行
$sudo docker run -it --rm --name my_running_app my_java_app
报错:Exception in thread "main" java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which r
equires it.
    at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:2
07)
    at java.awt.Window.<init>(Window.java:535)
    at java.awt.Frame.<init>(Frame.java:420)
    at Block1.<init>(Block1.java:40)
    at Block1.main(Block1.java:32)
已邀请:

oilbeater - 北大学渣@灵雀云

赞同来自:


看上去是 docker 镜像里面没有设置这个变量导致的,在 Dockerfile 里用 ENV 指定环境变量试一下吧

sean - 架构师

赞同来自:


如果是无头程序,CMD中加-Djava.awt.headless=true参数;否则可参考这篇文章:http://fabiorehm.com/blog/2014 ... cker/

要回复问题请先登录注册