イントロダクション
ラズパイ上でJava Swingを自動起動させるのにエラーが発生して動かないので
動かすために調べた事のメモです。
動かない原因
Java Swingはデスクトップを起動する「X」というアプリがないと動かない。
ラズパイのCUIでは、Xが起動していないため、こいつを動かす必要がある。
どーやるか?
その一
https://www.raspberrypi.org/forums/viewtopic.php?t=26234
を参考にする。
その二
https://stackoverflow.com/questions/1529526/to-create-x-windowx11-in-java-swing-and-to-get-its-id
JavaからXを起動しているようだ
調べた事
ラズパイ上では
/etc/init.d/lightdm startでデスクトップ起動、ストップなどもある
ちょいとsudo lightdmコマンドについて調べてみる
発見
ラズパイ での Swingの問題を解決する手順がある。
まだ試していません。
- ラズパイ 起動
- xを起動(lxde)
- デスクトップを表示せずにターミナルに戻る
- Javaコマンドを実行
https://lb.raspberrypi.org/forums/viewtopic.php?t=54025
1.ラズパイ起動時に自動ログイン
.config/lxsession/LXDE-pi/autostartファイルを作成する
@lxpanel --profile LXDE-pi @pcmanfm --desktop --profile LXDE-pi @pint-rpi @vncviewer ・ ・ ・
結論
SwingではAWT(Abstract Window Toolkit)を使用するので、Xserverを起動する必要がある。
対策
Javaのアプリケーションから直接画像を書き出してしまう
→ファイルバッファを使うなど。。。
「Xvfb」仮想フレームバッファが使用できる。以下のサイトを参考にする。
https://github.com/processing/processing/wiki/Running-without-a-Display