起動時にXサーバーにどのようにアクセスしますか?

起動時にXサーバーにどのようにアクセスしますか?

私はLinuxでJava Swingアプリケーションを実行しています。 Javaコードをサービスにラップしました。

問題なくコマンドプロンプトからmy_java_serviceを起動できます。

起動時にアプリケーションを起動したいです。そのため、コマンドを使用してmy_java_serviceを/ etc / rc5.dフォルダにコピーしましたupdate-rc.d

Xサーバーの起動順序はSTART20(S20)です。

そのため、my_java_serviceにSTART55(S55)の起動コマンドを発行しました。

私が得るエラーは次のとおりです。

Exception in thread "main" java.awt.AWTError: Can't connect to X11 window server using '0.0' as the value of the DISPLAY variable.

my_java_serviceが起動時にXサーバーに接続できないと思います。

my_java_serviceを使用していますが、xhost +local:all何もしません。

Xサーバーにアクセスして起動時にアプリケーションを起動するにはどうすればよいですか?

ベストアンサー1

この機能を有効にするには、アプリウィンドウがログイン画面にポップアップとして表示され、通過する誰もがアクセスできます。本当に欲しいですか?

ログイン画面で起動されたすべてのウィンドウは、誰かがログインすると強制的に終了するため、アプリケーションはユーザーログインを検出し、何らかの方法でそのユーザーセッションへの接続を再確立する必要があります。誰かがGUIを使用してログアウトすると、Xサーバーのリセットがトリガーされ、すべてのXアプリケーションがサーバーから切断されます。これを行うには、複雑な再接続ロジックが必要であること、またはサービスの実行中にローカルGUIを使用しないことを認識する必要があります。

実際に必要なのが、GUIコンソールでユーザーのログイン/ログアウトとは別にJavaサービスを実行することであれば、より良い解決策はアプリケーション用に別々のXサーバーを設定することです。

場合によってはアプリケーションと対話する必要がある場合は、スタンドアロンのVNC Xサーバーが適している可能性があります。独自の仮想ディスプレイがあり、必要に応じてVNCクライアントを使用して接続できます。

ローカルGUIを使用してアプリケーションとまったく対話する必要がない場合は、次のことを使用できます。仮想フレームバッファXサーバー、実際にはまったく表示されませんが、それ以外は実際のXサーバーのように動作します。 Linux ディストリビューションで同様xvfbのパッケージを見つけることができます。

おすすめ記事