私は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ファイルを実行しようとしたときに得たのと同じ種類のエラーです。
Ubuntuには、ヘッドレスをインストールするオプションがありますJava-これはグラフィックライブラリがないことを意味します。これは常にそうではありませんでしたが、Java先日10.10のテキストエディタ次のコマンドを実行して、これらのライブラリを含むJDKをインストールします。
Sudo apt-get install openjdk-6-jdk
編集:実際には、私の設定を見て、JREが必要になる場合があります。その場合は、次を実行します。
Sudo apt-get install openjdk-6-jre
apt
を使用してdefault-jdk
をインストールしたときに、この例外の取得を停止しました。 Ubuntu 14.04(Trusty Tahr)を実行していますが、問題は「ヘッドレス」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)
OpenJDKをHotSpotに置き換えるVMは正常に動作します:
Sudo apt-get autoremove openjdk-7-jre-headless
「env」コマンドを使用してX Window環境変数を確認します。
フレームの代わりにJFrameを使用します。また、JFrameから拡張しないでください。 gui
という名前のJFrameプロパティを持つクラスを記述するだけです。これは、使用可能なメソッドでこのJFrameを構成します。ここで拡張すると、OOPの使用が間違っています。
環境変数DISPLAYの値を確認してください。コマンドラインから単純なXアプリケーションを実行してみてください。動作する場合は、DISPLAYの値で正しい値を確認してください。
コマンドラインで次の操作を行うことにより、呼び出しごとに異なる値と環境変数を試すことができます。
DISPLAY=:0.0 <your-Java-executable-here>
プログラムをどのように呼んでいますか?
別のJava implementation/vendor。できればOracle/Sun Java: http://www.Java.com/en/ で確認します。残念ながら、奇妙な方法で異なります。