无法使用Ubuntu运行Java GUI程序

时间:2011-03-19 13:54:45

标签: java swing user-interface ubuntu runtime-error

我正在学习Java中的GUI,为此我创建了一个演示程序:

import java.awt.*;

public class FrameDemo extends Frame {

    public FrameDemo(){
        super("Frame Demo");
        setSize(200, 200);
        setVisible(true);
    }

    public static void main(String args[]){
        new FrameDemo();    
    }
}

编译成功。但是当我尝试执行程序时,我发现了以下错误:

Exception in thread "main" java.awt.HeadlessException
    at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:173)
    at java.awt.Window.<init>(Window.java:437)
    at java.awt.Frame.<init>(Frame.java:419)
    at FrameDemo.<init>(FrameDemo.java:4)
    at FrameDemo.main(FrameDemo.java:9)

我正在使用Xubuntu 10.10而java -version给出:

java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.5) (6b20-1.9.5-0ubuntu1)
OpenJDK Client VM (build 19.0-b09, mixed mode, sharing)

我该怎么做?

还有一件事:当我尝试执行Dr. Java和HJSplit的jar文件时,我遇到了同样的错误。

9 个答案:

答案 0 :(得分:46)

Ubuntu可以选择安装无头Java - 这意味着没有图形库。情况并非总是这样,但是我在前几天尝试在10.10上运行Java文本编辑器时遇到了这种情况。运行以下命令以安装具有以下库的JDK:

sudo apt-get install openjdk-6-jdk
编辑:实际上,查看我的配置,您可能需要JRE。如果是这种情况,请运行:

sudo apt-get install openjdk-6-jre

答案 1 :(得分:10)

当我使用default-jdk安装apt时,我停止了此异常。我正在运行Ubuntu 14.04(Trusty Tahr),这个问题似乎是因为有一个&#34;无头&#34;安装了Java。我所做的只是:

sudo apt-get install default-jdk

答案 2 :(得分:3)

就我而言

-Djava.awt.headless=true

已设置(间接由Maven配置)。我必须积极使用

-Djava.awt.headless=false

重写此内容。

答案 3 :(得分:2)

我的Ubuntu机器上也有 OpenJDK

$ java -version
java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.13.04.2)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)

用HotSpot VM替换OpenJDK可以正常工作:

sudo apt-get autoremove openjdk-7-jre-headless

How to install the JDK on Ubuntu (Linux)

答案 4 :(得分:0)

使用“env”命令检查X Window环境变量。

答案 5 :(得分:0)

使用JFrame而不是Frame。并且不要从JFrame扩展。只需编写一个具有名为gui的JFrame属性的类,该属性使用可用的方法配置此JFrame,因为这样做的风格更好。在这里扩展OOP的使用是错误的。

答案 6 :(得分:0)

检查您的环境变量DISPLAY的值是什么。尝试从命令行运行一个简单的X应用程序。如果有效,请检查DISPLAY的值是否正确。

您可以在命令行上执行以下操作,在每次调用的基础上尝试不同的值和环境变量:

DISPLAY=:0.0 <your-java-executable-here>

你是如何打电话给你的节目的?

答案 7 :(得分:0)

我会检查另一个Java实现/供应商。最好是Oracle / Sun Java:http://www.java.com/en/。不幸的是,开源实现以不同的方式有所不同。

答案 8 :(得分:-2)

这个命令对我有用。

Sudo dnf install java-1.8.0-openjdk (Fedora的)

Sudo apt-get install java-1.8.0-openjdk

应该适用于Ubuntu。