110

ローカルホストのポート 10.0 で X11 を表示するために接続するために Java を使用するスクリプトがあります。

しかし、私は常にこのエラーが発生します

java.lang.InternalError: Can't connect to X11 window server using 'localhost:10.0' as the value of the DISPLAY variable.
    at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
    at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:62)
    at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:178)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:142)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
    at sun.awt.X11.XToolkit.<clinit>(XToolkit.java:112)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at java.awt.Toolkit$2.run(Toolkit.java:849)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:841)
    at ij.io.Opener.openJpegOrGif(Opener.java:367)
    at ij.io.Opener.openImage(Opener.java:220)
    at ij.io.Opener.openImage(Opener.java:249)
    at ij.io.Opener.open(Opener.java:116)
    at ij.IJ.open(IJ.java:1112)
    at ij.macro.Functions.open(Functions.java:2006)
    at ij.macro.Functions.doFunction(Functions.java:129)
    at ij.macro.Interpreter.doStatement(Interpreter.java:205)
    at ij.macro.Interpreter.doBlock(Interpreter.java:515)
    at ij.macro.Interpreter.runUserFunction(Interpreter.java:278)
    at ij.macro.Interpreter.getFactor(Interpreter.java:1200)
    at ij.macro.Interpreter.getTerm(Interpreter.java:1162)
    at ij.macro.Interpreter.getExpression(Interpreter.java:1145)
    at ij.macro.Interpreter.getBooleanExpression(Interpreter.java:881)
    at ij.macro.Interpreter.getLogicalExpression(Interpreter.java:857)
    at ij.macro.Interpreter.getBoolean(Interpreter.java:850)
    at ij.macro.Interpreter.doIf(Interpreter.java:829)
    at ij.macro.Interpreter.doStatement(Interpreter.java:217)
    at ij.macro.Interpreter.doBlock(Interpreter.java:515)
    at ij.macro.Interpreter.doStatement(Interpreter.java:241)
    at ij.macro.Interpreter.doIf(Interpreter.java:831)
    at ij.macro.Interpreter.doStatement(Interpreter.java:217)
    at ij.macro.Interpreter.doStatements(Interpreter.java:195)
    at ij.macro.Interpreter.run(Interpreter.java:99)
    at ij.macro.Interpreter.run(Interpreter.java:65)
    at ij.macro.Interpreter.run(Interpreter.java:75)
    at ij.plugin.Macro_Runner.runMacro(Macro_Runner.java:127)
    at ij.plugin.Macro_Runner.runMacroFile(Macro_Runner.java:112)
    at ij.IJ.runMacroFile(IJ.java:103)
    at ij.ImageJ.main(ImageJ.java:517)

私はこの問題を解決するためにあらゆることを試しました:

export DISPLAY=:10.0
export DISPLAY=localhost:10.0

ポート0.0も試しましたが、常に同じエラーが発生します

xhostを試した後

xhost +local:all
xhost:  unable to open display ""
xhost:  unable to open display ":10.0"

どうすればこれを修正できますか X サーバーが実行されていないと思ったのでstartx、そのポートで実行されていると言ってみました

私のシステムはUbuntuサーバーエディション10.04です

4

31 に答える 31

65

-Djava.awt.headless=true起動時にパラメータを指定する必要があります。

于 2012-04-15T20:42:39.433 に答える
43

DISPLAY 変数を削除する

unset DISPLAY

これは、ほとんどの場合 (アプリケーション サーバーやその他の Java ベースのツールの起動など) に役立ち、多くのコマンド ラインをすべて変更する必要がなくなります。

専用の app-server/tools ユーザーの .bash_profile に追加することも快適です。

于 2012-12-10T21:20:53.063 に答える
42

このコマンドは、問題を解決するのに役立ちました:

export DISPLAY=:0
于 2013-02-25T13:54:11.940 に答える
9

CI(jenkins,..) で maven-surefire-plugin を介して自動化された単体テストを実行しようとして、上記のエラーが発生した場合は、必ず確実なプラグイン構成を更新してください。

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-surefire-plugin</artifactId>
     <version>${maven-surefire-plugin.version}</version>
     <configuration>
            <systemPropertyVariables>
                <java.awt.headless>true</java.awt.headless>
            </systemPropertyVariables>
      </configuration>
</plugin>
于 2014-05-22T13:47:05.183 に答える
8

これで修正されます:

/usr/bin/java -Djava.awt.headless=true $Your_program
于 2012-07-17T15:00:53.190 に答える
3

最初に: XQuartz を起動します。

2 番目: ssh -X user@ip_address

...: プロセスを開始します

ssh してから XQuartz を起動すると、そのエラーが発生します。

于 2016-10-28T21:05:28.130 に答える
3

ヘッドレス フェドーラ 22 を使用してラズベリー パイ 2 にグラスフィッシュをインストールする無駄な作業を数日間行った後、以下は問題なく機能しました。

 unset DISPLAY
java -Djava.awt.headless=true -jar glassfissh-installer-v2ur2-b04-linux.jar

ここから助けてもらった

于 2016-02-27T01:26:23.640 に答える
1

私の場合、マシンにスペースが残っておらず、同じ問題に直面しました。スペースの問題である場合もあります。Linux/Unix 環境のスペースを確認し、マシンに十分なスペースがあることを確認してください。

于 2017-01-02T05:36:40.407 に答える
0

Hudson でこのエラーが表示された場合は、ホーム ディレクトリから .java ディレクトリを削除してみてください。

于 2013-11-01T16:15:15.103 に答える
0

リモートで jconsole コマンドを実行すると、同じエラーが発生します。リモートの Linux ホストで実行されている jconsole のパラメータを変更したいのですが、secureCRT を使用してホストにログインできます。端末はこのエラー情報をスローします。幸い、パテを使えば大丈夫です。変....

于 2013-05-02T05:48:27.633 に答える
0

私がそれを機能させる唯一の方法は、テンプレートを使用してスクリプトを実行することでした. 例: sudo ./glassfish-3.1.2.2-unix.sh -s テンプレート

これにより、Glassfish がサイレント モードでインストールされます。http://docs.oracle.com/cd/E18930_01/html/821-2427/ghmva.html

于 2013-04-24T17:02:40.313 に答える
0

ssh でログインしているときにリモート サーバーでアプリケーションを起動する場合、別の方法として、-xパラメーターを指定して ssh を起動するかForwardX11 no/etc/ssh/ssh_config. この場合、ssh は環境変数 DISPLAY を作成しません。

于 2015-10-12T11:16:15.540 に答える
0

Jenkins からコードをトリガーしている場合は、「ビルド前に Xvfb を開始し、ビルド後にシャットダウンする」オプションを有効にすると役立つ場合があります。それは私を助けました。

于 2017-09-13T05:46:19.190 に答える
0

Xorg を使用してログインすることで、この問題を修正しました。デフォルトでは、Wayland を使用しています。Wayland は、独自の問題を抱えている Xorg の設計上の欠陥のほとんどを排除しているようです。ここに画像の説明を入力

于 2020-02-25T09:38:31.497 に答える
-1

私にとっての問題は、xorg-x11-xauthがインストールされていなかったことです。私はそれをインストールし、それからそれは働いた。

私が今持っているパッケージは次のとおりです。

  • libX11-common-1.6.3-2.el6.noarch
  • libX11-1.6.3-2.el6.i686
  • libX11-1.6.3-2.el6.x86_64
  • xorg-x11-drv-ati-firware-7.6.1-2.el6.noarch
  • xorg-x11-xauth-1.0.9-1.el6.x86_64
于 2016-11-01T14:19:41.950 に答える