Init.dでJava JAR Swing実行可能ファイルを実行するようにDISPLAYを設定する方法

Init.dでJava JAR Swing実行可能ファイルを実行するようにDISPLAYを設定する方法

ARM デバイス内の Raspbian Wheezy Debian ディストリビューションから起動時に Java JAR Swing GUI 実行可能ファイルを実行する必要があります。

私はフォローしていますこれ参考までにmyappmyapp-start.shmyapp-stop.sh、とこれ可能な解決策(および他の同様の解決策)。ただし、DISPLAY変数への参照はありません。

多くの選択肢を確認してみましたが、

オプションを試しましたが適用できません:

  • /usr/bin/java -jar -Djava.awt.headless=true $myapp.jar
  • unset DISPLAY(文章内部myapp-start.sh、上java -jar

間違い:

  • java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operation which requires it.

試したオプションmyapp-start.sh(上記の文章内java -jar):

  • export DISPLAY=:0
  • export DISPLAY=:0.0
  • export DISPLAY=localhost:0.0

間違い:

  • Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable...
  • Client is not authorized to connect to ServerException in thread stack...

試していないオプション

  • ssh - X localhostssh:サーバーをどのように運営する必要がありますかX11?進行中の作業はどこで行う必要がありますかinit.d?これはGUIを使用してJavaプログラムを実行するための標準的なソリューションですか?
  • USER=rootinside myapp-start.sh:init.d停止してパスワードを尋ねます。スマートすぎてプロセスが起動しません。
  • 上記のオプションのいずれかをコードのmyapp-start.sh外側に含める必要がありますか?どこ?

してはいけないもっと簡単起動時にコードスニペットを実行しますか?

他のオプションを選択していただきありがとうございます。

2015-04-12 修正

新しいオプション

次のオプションは、デフォルトのユーザーがログインし、X11の起動/etc/xdg/lxsession/LXDE-pi/autostart後に実行されるコードスニペットをここに追加します(参照:piエリヤ・グレー提案):

  • usr/bin/java -jar /home/pi/Embedded/bin/PowerBar.jar(アンパサンドなし)
  • export DISPLAY=:0.0 usr/bin/java -jar /home/pi/Embedded/bin/PowerBar.jar(アンパサンドなし)
  • /bin/bash /home/pi/Embedded/bin/powerbarstart.sh(アンパサンドなし)

どちらもバックグラウンドでアプリケーションを起動します。つまり、バックグラウンドミュージックを再生し、VNCを介してのみグラフィックにアクセスします:0(を使用してTightVNC)。副作用としてスクリーンセーバーが有効になり、アプリケーションは約60秒ごとに停止します。同じ場所を使用してスクリーンセーバーを無効にすることもできます。

私に含まれていないオプションやシンボルがありませんか?

解決策 デバイスが:1.0そうでないように設定されています:0.0。これを変更するとmyapp-start.sh問題が解決しました。

答え1

アプリケーションが対話型でない場合は、仮想X11サーバーを起動し、使用するアプリケーションのDISPLAY変数を設定できます。

この方法で使用できるX11サーバーは次のとおりです。

後者を使用すると、後で接続してVNCクライアント(vncviewer)を使用して画面を表示して対話できます。

Raspberry pi(または同様のデバイス)がpiグラフィカル環境でユーザーを自動的にログインするように構成されている場合は、ユーザーとしてアプリケーションを起動してpiディスプレイ:0を使用できます。これを行う前に、X11が起動を完了したことを確認する必要があります。

pi編集:設定はXvncサーバーをuser最初に起動し、次にフレームバッファのデフォルトのXサーバーをuserとして起動するようですroot。この場合、見つかったとおりにアプリケーションを実行し、そのrootディスプレイとして使用する必要があります。:1

または、実際に必要なものが起動時に一度ではなく、ユーザー(通常はpi)がグラフィカル環境でログインするたびにアプリケーションを起動する場合は、そのグラフィック環境に適したrcファイルにそれを追加してください。たとえば/etc/xdg/lxsession/LXDE-pi/autostart

関連情報