问题描述
我正在学习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文件时,我遇到了同样的错误。
最佳解决方案
Ubuntu可以选择安装无头Java – 这意味着没有图形库。情况并非总是这样,但是我在前几天尝试在10.10上运行Java文本编辑器时遇到了这种情况。运行以下命令以安装具有这些库的JDK:
sudo apt-get install openjdk-6-jdk
编辑:实际上,看看我的配置,你可能需要JRE。如果是这种情况,请运行:
sudo apt-get install openjdk-6-jre
次佳解决方案
当我使用apt
安装default-jdk
时,我停止了此异常。我正在运行Ubuntu 14.04(Trusty Tahr),问题似乎是安装了”headless” Java的结果。我所做的只是:
sudo apt-get install default-jdk
第三种解决方案
就我而言
-Djava.awt.headless=true
已设置(由Maven配置间接)。我不得不积极使用
-Djava.awt.headless=false
重写这个。
第四种方案
我的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)