ARM デバイス内の Raspbian Wheezy Debian ディストリビューションから起動時に Java JAR Swing GUI 実行可能ファイルを実行する必要があります。
私はフォローしていますこれ参考までにmyapp
、myapp-start.sh
とmyapp-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 localhost
ssh
:サーバーをどのように運営する必要がありますかX11
?進行中の作業はどこで行う必要がありますかinit.d
?これはGUIを使用してJavaプログラムを実行するための標準的なソリューションですか?USER=root
insidemyapp-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
。