web-dev-qa-db-ja.com

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

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)
92
user42155

メインディスプレイを使用している場合、

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がローカルボックスにトンネリングしているソケットを指します。

104
Paul Tomblin

これをX11環境内から実行していますか?ターミナルウィンドウを使用できますが、X内になければなりません(グラフィカルログイン後、またはstartxを実行して)。

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

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

10
Mikeage

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

これを行うには、PuTTYを開き、Connection => SSH => Tunnelsに移動し、X11転送を有効にします

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

export DISPLAY=10.75.75.75:0.0

enter image description here

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

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

このアプリをダウンロード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」というアプリケーションを実行し、設定が次のようになっていることを確認します。

  • [ディスプレイの設定]ウィンドウで[デフォルトエントリ]を選択し、[次へ]をクリックします
  • [セッションタイプ]ウィンドウで[次へ]をクリックします。
  • [追加のパラメーター]ウィンドウで[次へ]をクリックします(クリップボードのチェックボックスに注意してください)。
  • 設定を保存し、クリックして終了します。

PuTTYの設定

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

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

  • Ssh-> X11で、チェックボックスをクリックしてX11転送を有効にします。
  • xディスプレイの場所のテキストボックスで、localhost:0.0と入力します

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

乾杯!!!

2

LinuxからWindowsで動作するX Windowアプリケーションを取得しようとしている場合:

私のために働いたのは、Windowsマシンにxmingサーバーをセットアップし、Linuxホストに接続するときにPuTTYでX11転送オプションを設定し、Windows IPアドレスにディスプレイポートを入れてから、ディスプレイ変数にWindows IPアドレス:0.0を入れることでした

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

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

  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 add

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

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

0
Naseer-shaik

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

Byobuを終了し、(グラフィカルターミナルで)スクリプトを実行するだけです。

0
victe

初期チェック。

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はありません)マシンでも同じ問題に直面しました。インストールして解決しました

NXクライアントfor Windows

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

VNC

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

ELSE

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

0