web-dev-qa-db-ja.com

Xlib:プロトコルが指定されていません

重複の可能性:
リモートXディスプレイでウィンドウを開く(「ディスプレイを開けない」理由)?

独立して実行すると、X11Display変数を設定する必要があるスクリプトがあります。バックグラウンドデーモンジョブを使用してこのスクリプトを呼び出すと、次のエラーが発生します。
Xlib: connection to "localhost.localdomain:0.0" refused by server
Xlib: No protocol specified
これで起こりうる間違いを特定するのを手伝ってください。
スクリプト内にある以下のコマンド。
export DISPLAY=hostname:0.0
Java ScreenCapture
同じスクリプトがサービスとして実行されているバックグラウンドデーモンによって呼び出された場合、エラーが発生します。

3
PackedUp

ここで推測しているだけですが、バックグラウンドデーモンが、ディスプレイにアクセスする権限を持たない別のユーザーとして実行されている可能性があります。

xhostを使用して、ユーザーアクセスを制御できます。

Xhostプログラムは、Xサーバーへの接続を許可するリストにホスト名またはユーザー名を追加および削除するために使用されます。

次のコマンドを実行して、これが問題であるかどうかをテストできます。

xhost +

ターミナルウィンドウから。これにより、すべてのユーザーがディスプレイにアクセスできるようになります。

xhost +(ここにユーザー名を挿入)

特定のユーザーにアクセスを許可します。

3
QuasarDonkey