尝试在java中创建AWT窗口时出现异常

时间:2017-06-01 14:11:12

标签: java bash

所以最近我想学习AWT并借了一本书来展示以下代码:

/*Listing2301.java*/

import java.awt.*;

class Listing2301{
        public static void main(String[] args){
                Frame wnd = new Frame("Einfaches Fenster");

                wnd.setSize(400,300);
                wnd.setVisible(true);
        }
}

此代码可以编译。根据这本书,这段代码应该生成一个没有任何功能的空窗口,但是当我尝试执行它时会引发异常:

  

线程“main”中的异常java.awt.HeadlessException:否X11 DISPLAY   变量已设置,但此程序执行了一个操作   需要它。           at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)           在java.awt.Window。(Window.java:535)           在java.awt.Frame。(Frame.java:420)           在Listing2301.main(Listing2301.java:7)

我正在使用我在Windows 10 PC上安装的ubuntu bash的vi编辑器。

我的编程教授建议在bash中键入export DISPLAY=:0.0。 编译代码并再次执行后,错误消息更改为:

  

线程“main”中的异常java.lang.InternalError:无法连接到   X11窗口服务器使用':0.0'作为DISPLAY变量的值。           at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)           at sun.awt.X11GraphicsEnvironment.access $ 200(X11GraphicsEnvironment.java:65)           at sun.awt.X11GraphicsEnvironment $ 1.run(X11GraphicsEnvironment.java:110)           at java.security.AccessController.doPrivileged(Native Method)           在sun.awt.X11GraphicsEnvironment。(X11GraphicsEnvironment.java:74)           at java.lang.Class.forName0(Native Method)           在java.lang.Class.forName(Class.java:195)           在java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:102)           at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:81)           在java.awt.Window.initGC(Window.java:467)           在java.awt.Window.init(Window.java:487)           在java.awt.Window。(Window.java:536)           在java.awt.Frame。(Frame.java:420)           在Listing2301.main(Listing2301.java:7)

如何获得空的AWT窗口?代码错了吗?或者我需要以不同方式配置bash吗?

1 个答案:

答案 0 :(得分:1)

Windows 10的Ubuntu子系统基本上是同一台计算机中的独立操作系统。非常像虚拟机 - 它可以访问您的磁盘,但它无法运行任何Windows EXE文件。

它运行的Java是 Linux Java。不是Windows Java,它是一个EXE文件。因此,它无法访问Windows GUI。它寻找在机器上运行的X服务器,就像在Linux机器上一样。但是这样的服务器通常不能在Windows机器上运行。

您应该在Windows下运行图形程序,而不是在Ubuntu子系统中运行。但是,非图形Java程序应该没有问题。

相关问题