/etc/init.dの起動スクリプトで起動すると正しく動作しないJavaアプリケーションの奇妙な点を追跡しようとしていますが、GUIターミナルウィンドウを開き、/etc/init.d/で起動すると実行されます。 myappが起動したら大丈夫です。 (奇妙なことは、アプリケーションの一部が起動方法のコード操作を使用していくつかのハッキングを実行することです。
正解はこの投稿私はGnome端末がウィンドウマネージャ内で実行されているという手がかりを与えました。 tty端末(ctrl-alt-f1またはsshを介して)を介してスクリプトを実行することが起動時に実行するのと同じように動作することを確認できました。
私の主な質問:コンピュータの起動時にアプリケーションが起動しますが、Xで起動したように動作するようにするにはどうすればよいですか?これまで、特定のパラメータを使用してJava VMを起動する必要があるため、スクリプトパスに従いました。
フォローアップの質問(厳密に理解するために):ウィンドウマネージャで実行されているアイテムを介してスクリプトが実行されたときにスクリプトが異なる動作をするために、後で何が起こっていますか? Googleはまだこれについて教えていません。
答え1
/etc/init.d
スクリプトは非対話型で非ログインであり、Xセッションにアクセスしようとしません。システム全体提供する。1 システムサービスは特定のサービスに関連付けられていません。ログインuser、2ですが、Xセッションは常にログインしているユーザーに属します。
アプリケーションが機能するためにGUIコンテキストが必要な場合は、システムサービスではありません。あなたはまだ説明していません。なぜそれを求めるか何ができるか~/.xinitrc
ただし、initの代わりにデスクトップ環境のブートシステムを使用する必要があるかもしれません。
1
2サービスはしばしば自分の特別なユーザーに関連付けられますが、サービスはそうではありません。 ログインしたがって(通常、そのようなユーザーできないログしました)。
答え2
何らかの奇妙な理由でアプリケーションにXサーバーが必要ですが、便利な機能を実行できない場合は、仮想Xサーバーを提供してください。これは、Webアプリケーションの自動化されたテストバーからWebブラウザを実行するためによく行われます。誰も画面を見ていませんが、画面がないとWebブラウザを起動できません。
wxyaメモリにのみ「表示」され、何も表示されないXサーバーを作成します。ハードウェアや権限は必要ありません。
これを使用する最も簡単な方法はDebianxvfb-run
スクリプトを使用することです。
xvfb-run java MyWeirdApp
そうでない場合は、いくつかのxvfb-run
場所のいずれかを選択してください。コピーWebや他の場所でDebian パッケージ。