有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing无法使用Ubuntu运行Java GUI程序

我正在学习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文件时遇到的错误是一样的


共 (6) 个答案

  1. # 1 楼答案

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

    sudo apt-get install openjdk-6-jdk
    

    实际上,看看我的配置,你可能需要JRE。如果是这样,请运行:

    sudo apt-get install openjdk-6-jre
    
  2. # 2 楼答案

    当我使用apt安装default-jdk时,我停止了这个异常。我运行的是Ubuntu 14.04(Trusty Tahr),问题似乎是安装了“无头”Java的结果。我所做的只是:

    sudo apt-get install default-jdk
    
  3. # 3 楼答案

    我会咨询另一家Java实现/供应商。最好是Oracle/Sun Java:http://www.java.com/en/。不幸的是,开源实现有着奇怪的不同之处

  4. # 4 楼答案

    我在我的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)

  5. # 5 楼答案

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

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

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

    你怎么称呼你的程序

  6. # 6 楼答案

    就我而言

    -Djava.awt.headless=true
    

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

    -Djava.awt.headless=false
    

    来推翻这个