1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み】「X11 DISPLAY変数がありません」 - どういう意味ですか?

2022-01-12 20:41:50

質問内容

Linuxサーバー(Slackware)にJavaアプリケーションをデプロイすると、エラーが発生します。

~$ java -jar gate-5.0-beta1-build3048-installer.jar
- ERROR -

java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(Graphic sEnvironment.java:159)
at java.awt.Window.<init>(Window.java:407)
at java.awt.Frame.<init>(Frame.java:402)
at net.sourceforge.mlf.metouia.borders.MetouiaDotsBuf fer.<init>(MetouiaDotsBuffer.java:105)
at net.sourceforge.mlf.metouia.borders.MetouiaDots.<i nit>(MetouiaDots.java:66)
at net.sourceforge.mlf.metouia.borders.MetouiaToolBar Border.<init>(MetouiaToolBarBorder.java:49)
at net.sourceforge.mlf.metouia.MetouiaLookAndFeel.ini tComponentDefaults(MetouiaLookAndFeel.java:241)
at javax.swing.plaf.basic.BasicLookAndFeel.getDefault s(BasicLookAndFeel.java:130)
at javax.swing.plaf.metal.MetalLookAndFeel.getDefault s(MetalLookAndFeel.java:1591)
at javax.swing.UIManager.setLookAndFeel(UIManager.jav a:537)
at javax.swing.UIManager.setLookAndFeel(UIManager.jav a:581)
at com.izforge.izpack.installer.GUIInstaller.loadLook AndFeel(GUIInstaller.java:373)
at com.izforge.izpack.installer.GUIInstaller.<init>(G UIInstaller.java:116)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInsta nce(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newI nstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Construc tor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:30
at com.izforge.izpack.installer.Installer.main(Instal ler.java:62)

解決方法は?

メインディスプレイであれば

export DISPLAY=:0.0

または、cshやtcshを使用している場合

setenv DISPLAY :0.0

をクリックすると、アプリを実行する前に

実は、自動で設定されないのが不思議なんです。このアプリケーションを非グラフィックターミナルから起動しようとしていませんか?そうでなければ、デフォルトの.profile、.login、.bashrcまたは.cshrcを変更しましたか?

DISPLAY を :0.0 に設定することは、私が言ったように、あなたがメインディスプレイに座っているか、少なくともあなたのユーザー ID でメインディスプレイがログオンしていることを前提にしていることに注意してください。ログオンしていない場合、または異なるユーザーIDの場合、これは失敗します。

他のマシンから入ってきて、そのマシンのメインディスプレイで X が動いている場合、 "ssh -X hostname" でそのホストに接続すると、ssh が X ディスプレイを転送して返してくれます。ssh -X" セッションでは、DISPLAY 環境変数は "localhost:11.0" のような値を持ち、これは ssh があなたのローカルボックスへトンネリングしているソケットを指しています。