web-dev-qa-db-ja.com

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)

どうすればいいですか?

もう1つ:Dr. JavaとHJSplitのjarファイルを実行しようとしたときに得たのと同じ種類のエラーです。

33
codeomnitrix

Ubuntuには、ヘッドレスをインストールするオプションがありますJava-これはグラフィックライブラリがないことを意味します。これは常にそうではありませんでしたが、Java先日10.10のテキストエディタ次のコマンドを実行して、これらのライブラリを含むJDKをインストールします。

Sudo apt-get install openjdk-6-jdk

編集:実際には、私の設定を見て、JREが必要になる場合があります。その場合は、次を実行します。

Sudo apt-get install openjdk-6-jre
46
Kaleb Brasee

aptを使用してdefault-jdkをインストールしたときに、この例外の取得を停止しました。 Ubuntu 14.04(Trusty Tahr)を実行していますが、問題は「ヘッドレス」Javaがインストールされていることの結果であるようです。

Sudo apt-get install default-jdk
10
wachr

私の場合

-Djava.awt.headless=true

設定されました( Maven 構成によって間接的に)。積極的に使わなければならなかった

-Djava.awt.headless=false

これをオーバーライドします。

3
Wolfgang Fahl

私も私の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)

OpenJDKをHotSpotに置き換えるVMは正常に動作します:

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

JDKをUbuntuにインストールする方法(Linux)

2
prayagupd

「env」コマンドを使用してX Window環境変数を確認します。

0
KarolDepka

フレームの代わりにJFrameを使用します。また、JFrameから拡張しないでください。 guiという名前のJFrameプロパティを持つクラスを記述するだけです。これは、使用可能なメソッドでこのJFrameを構成します。ここで拡張すると、OOPの使用が間違っています。

環境変数DISPLAYの値を確認してください。コマンドラインから単純なXアプリケーションを実行してみてください。動作する場合は、DISPLAYの値で正しい値を確認してください。

コマンドラインで次の操作を行うことにより、呼び出しごとに異なる値と環境変数を試すことができます。

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

プログラムをどのように呼んでいますか?

0
Allen

別のJava implementation/vendor。できればOracle/Sun Java: http://www.Java.com/en/ で確認します。残念ながら、奇妙な方法で異なります。

0
KarolDepka