「X11 DISPLAY変数なし」-それはどういう意味ですか?


102

Linuxマシン(Slackware)にJavaアプリケーションをインストールしようとしています。

次のエラーを受け取りましたが、理解できません。

問題への取り組み方を教えていただけませんか。ありがとうございました。

ここに私が得るものがあります:(私はいくつかのX11 DISPLAY変数を設定する必要があるようですが、どのような値をどのように与える必要がありますか?)

~$ 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)

私は同じ問題を抱えていますが、コンソールでは完全に機能しますが、Eclipseを使用すると同じ例外がスローされます。そのコード行を追加しました。Processproc_exporting = Runtime.getRuntime()。exec( "sudo export DISPLAY =:0.0") ; それでも動作しません
hb.Sara

3
puTTYを介してリモートでコンソールに接続するときに、この問題を解決するために必要な情報を提供する回答はありません。SSHに関する答えは、実際にそれを機能させる方法を説明していません。これに対処する質問を知っている人はいますか?

回答:


120

メインディスプレイを表示している場合は、

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は、DISPLAY環境変数が正しく設定されていることも確認します(上記のさまざまなドットファイルで変更されていない場合)。「ssh -X」セッションでは、DISPLAY環境変数の値は「localhost:11.0」のようになり、sshがローカルボックスにトンネリングしているソケットを指します。


こんにちは、ありがとうございました。最初のものが私のために働きました。はい、私はそれを非グラフィック端末から始めています。
user42155 2009年

グラフィック表示にアクセスしたいようですが。グラフィックディスプレイが使用できない場合、または他のユーザーIDに属している場合は、実行しないように注意してください。
ポールトンブリン

3
これは、コンソールを使用しているために機能することに注意してください。別の端末を使用している場合は、端末でXサーバーを実行してから、環境がマシンを指すように設定する必要があります(エクスポートDISPLAY = 'pauls端末のホスト名':0.0など)
KevinDTimm

@kevindtimm、良い点-ssh -Xに関する@Mikeageの情報を私の回答に組み込みます。
ポールトンブリン

1
Xサーバーへの接続を必要とする自動化タスクを実行する必要がある場合は、仮想Xサーバーを作成するxvfbを確認できます。これは、一部のバッチテストや実行中のテストに非常に役立ちます。
Wichert Akkerman、2011

10

これをX11環境内から実行していますか?ターミナルウィンドウを使用できますが、X内にある必要があります(グラフィカルログインの後、またはstartxを実行することによって)。

すでにグラフィカル環境内にいる場合は、bashのようなシェル(bash、shなど)の場合はDISPLAY =:0をエクスポートし、Cシェルベースのシェル(csh、tcshなど)の場合はsetenv DISPLAY:0を試してください。

SSHを介して別のマシンから接続している場合は、-Xオプションを使用して、現在のマシンでグラフィカルインターフェースを表示します(そこで実行されているXサーバーがある場合(ウィンドウズ用のxming、標準のLinux Xなど)サーバ)。


こんにちは、私はstartxを実行しています。
user42155 2009年

そうそう、Slackware。10年前に最後に使用したときと同じように、それはまだ最低限ですか?
ポールトンブリン

ランレベル3でもデフォルトで起動します。もちろん、ランレベル5で起動するように指示すると、KDEがインストールされていることを前提に、かなりのKDMログインメニューが表示されます。
アダムJaskiewicz 2009年

ありがとう!CentOSおよびSSH(putty)で使用: export DISPLAY=:0
jacktrades '21 / 08/21

8

PuTTyでX11転送を有効にする必要があります

これを行うには、PuTTyを開き、[接続] => [SSH] => [トンネル]に移動し[ X11転送を有効にする]チェックボックスをオンにします

また、サーバーにsudoして、以下の変数をエクスポートしますIPはローカルマシンのIPです

export DISPLAY=10.75.75.75:0.0

ここに画像の説明を入力してください


4

「xauth」プログラムがリモート側にインストールされていない場合、上記と同様のケースで問題になる可能性があるもう1つの問題-Xは転送されず、$ DISPLAYが設定されません。"ssh -Xv ip_address"を実行すると検索され、見つからない場合は失敗します。詳細モード(失敗IMO)をオンにしないと表示されません。通常、同じ名前のパッケージで「xauth」を見つけることができます。


3

非常に簡単で、同じ問題が発生した後、エラーを表示して修正するのに役立つアプリをダウンロードしてインストールしました。

このアプリをダウンロードxming:

http://sourceforge.net/project/downloading.php

インストールして、このリンクの設定を使用します。

http://www.geo.mtu.edu/geoschem/docs/putty_install.htmlまたは次の手順に従います。

PuTTyとXmingのインストール/設定

PuTTyとXmingがPCにダウンロードされたら、それぞれの指示に従ってインストールします。

Xmingの設定

Xmingをインストールしたら、「XLaunch」というアプリケーションを実行して、設定が次のようになっていることを確認します。

  • Display SettingsウィンドウでDefaultエントリを選択し、Nextをクリックします。
  • [セッションタイプ]ウィンドウで次をクリックします。
  • [追加パラメータ]ウィンドウで次をクリックします(通知クリップボードチェックボックスはtrueです)
  • 設定を保存し、クリックして終了します。

PuTTyの構成

PuTTyをインストールしたら、デスクトップのPuTTyアイコンをダブルクリックして、次のように構成します。

これは、ログインプロファイルを作成して保存することを示しています。

  • ssh-> X11で、チェックボックスをクリックしてX11転送を有効にします。
  • Xの表示場所のテキストボックスにlocalhost:0.0と入力します

プロファイルを保存してから、リモートでサーバーに接続してテストします。

乾杯!!!


リンクからの重要な情報を回答自体に含めてください。リンクが最終的に死に、回答が役に立たなくなる可能性があるためです。
16年

2

これを行うには多くの方法があります。私は以下の便利なことをしましたが、いつもうまくいきます。

  1. リモートサーバーに、xorg-x11-xauth、xorg-x11-font-utils、xorg-x11-fontsをインストールしてください。
  2. ローカルデスクトップでXmingサーバーを実行する
  3. puttyで、サーバーにsshする前に、X11転送を有効にし、表示場所をlocalhost:0.0に設定します。
  4. サーバー上で.Xauthorityファイルが生成され、DISPLAY変数がすでに設定されていることに注意してください。

    $ xauthリスト

    $ xauth追加

テストするには、xclockまたはxeyesと入力します

:ユーザーを切り替えるには、.Xauthorityファイルをそれぞれのユーザーのホームディレクトリにコピーし、そのユーザーからDISPLAY変数もエクスポートします。


0

Byobuターミナル内でスクリプトを起動すると、JDK 8とNetbeansをインストールしようとしたときに、Ubuntu 14.04.01で同じ問題が発生しました(おそらく画面でも同じです)。

Byobuを終了し、(グラフィカル端末で)スクリプトを実行します。


0

初期チェック。

1)DISPLAYを他のマシンにエクスポートする場合は、xhost +そのマシンでコマンドを入力したことを確認してください。このコマンドを使用すると、他のマシンが自分のDISPLAYをこのマシンにエクスポートできます。セキュリティ上の制約があるかもしれませんが、それについて知っているだけです。チェックssh -X MachineIPする必要はありませんxhost +か?

2)JCONSOLEそれらのJVMプロセスが別のユーザーで実行されていて、別のユーザーでDISPLAYをエクスポートしているため、一部のプロセスがすべてのプロセスを表示しない場合があります。とても良いフォローCD_DIR>sudo ./jconsole

3)WAS(WEBSPHERE); jconsoleはそのJavaサーバープロセスに接続できません。今度はリンクまで移動してから、接続してみてください。これでうまくいきました。このページは、jconsoleがそのサーバーに接続できるようにいくつかの変数を初期化している可能性があります。

WASコンソール>アプリケーションサーバー> server1>プロセス定義> Java仮想マシン


私は、AIX(コマンドラインインターフェイスのみが利用可能で、DISPLAY UIがない)マシンで同じ問題に直面しました。インストールして解決しました

Windows用NXクライアント

ステップ1:そのWindowsマシンを介して、GUIコンソールが利用可能なUNIXボックスに接続しました。
ステップ2:そのUNIXボックスからAIXボックスにSSH接続します。
ステップ3:「export DISPLAY = UNIXMACHINE:NXClientPORTConnectedMentionedOnTitle」の
ようにDISPLAYを設定します。ステップ4:ここで、DISPLAYを必要とするプログラムを起動するとします。このUNIXボックスで起動されます。

VNC

ディスプレイが利用可能なUNIXボックスにVNCをインストールした場合。WindowsとNXクライアントは必要ありません。ステップ1:VNCを使用して、GUIコンソールが利用可能なUnixボックスに接続します。
ステップ2:そのUNIXボックスからAIXボックスにSSH接続します。
ステップ3: "export DISPLAY = UNIXMACHINE:VNCPORT"の
ようにDISPLAYを設定します。ステップ4:ここで、DISPLAYを必要とするプログラムを起動するとします。このUNIXボックスで起動されます。

そうしないと

ステップ1:そのUNIXボックスからAIXボックスにSSH接続します。
ステップ2:「export DISPLAY = UNIXMACHINE:VNCPORT」の
ようにDISPLAYを設定します。ステップ3:ここで、DISPLAYを必要とするプログラムを起動するとします。このUNIXボックスで起動されます。


0

LinuxからWindowsでX Windowアプリケーションを動作させようとしている人のために:

私のために働いたのは、私のWindowsマシンにxmingサーバーをセットアップし、Linuxホストに接続するときにputtyでX11転送オプションを設定し、表示ポートでWindows IPアドレスを入力し、次にWindows IPアドレスで表示変数を表示することでした。

Xmingサーバーがそのホストからのトラフィックを確実に受け入れるように、LinuxホストのIPアドレスをX0.hostsファイルに追加することを忘れないでください。それを理解するのにしばらくかかりました。


-3

「ホーム」ディスプレイマシンで「ホスト+」を実行することを忘れないでください。マシンにsshすると、「ssh -x hostname」を実行します。


14
「xhost +」を使用しないことを強くお勧めします。Xサーバーのすべてのセキュリティを効果的に無効にするためです。sshはxauthを使用してX11認証を自動的にセットアップするのに十分スマートなので、xhostを使用する必要はありません。
Wichert Akkerman、2011

これはコメントではなく、投稿である必要があります。コメントできないからといって、悪い投稿をするべきではありません。
Elliot A.16年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.