0
0

More than 3 years have passed since last update.

ラズパイでjavafxを動かす方法 2020/07/12投稿

Last updated at Posted at 2020-07-12

恐らく、かなり多数の方がラズパイでJAVA FXを実行する方法を探しているかと思うが日本語の情報が少ない為、ここに略記する。

Google先生で検索すると以下の記事が最も気になる。
https://qiita.com/sh1k1ya/items/72d40e6ef8b8cd51e68c
「RaspberryPiでJavaFXとGPIO制御を組み合わせてみる…が、まだ完成していないorz」

参考にしたが、なかなか動作させるに至らなかった

開発ツールはEclipseを使用
EclipseにJAVAFXを導入し、開発する方法は他サイトにゆずる。
<やりたいこと>
〇ラズベリーパイにsambaを導入してwindows上のeclipseでクロス開発環境を構築する
 windows10の場合は、プログラムと機能でsambaクライアントを有効にする必要もある
〇シーンビルダーで編集した実行可能jarを自動実行させる

<実行手順略記>
1.SDカードにRasbian OS イメージを書き込み
2.初期設定
3.無線LANの設定
4.sambaのインストール

$/sudo apt-get install samaba

5.smb.conf編集

sudo nano /etc/samba/smb.conf

最終行に追記


[raspberry_pi]
comment = Share
path = /home/pi/samba
public = yes
read only = no
browsable = yes
force user = pi


6./home/piにsambaフォルダを作成

$ sudo mkdir /home/pi/samba


7. サービス起動 ※次回以降ラズパイ起動時にも自動起動される
 

$ sudo systemctl restart smbd

8.javafxの配置
https://openjfx.io/
 ・JavaFX armv6hf SDKをダウンロードしZIPを解凍
 ・解凍したファイル群をsambaフォルダに配置
 ・armv6hf-sdkを右クリック 端末で開く
・パーミッション確認
・パスを通す ※パスを通すことでjavaFXのsoファイルが実行できる

\$ export PATH="$PATH:/home/pi/samba/armv6hf-sdk"


  
・パスの確認

/$ echo PATH


/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/home/pi/samba/armv6hf-sdk

9.sambaに適当なJAVAFXを含む実行可能jarを配置
(例)
・コマンドラインに以下を入力すると実行できる

$ java --module-path /home/pi/samba/armv6hf-sdk/lib --add-modules=javafx.controls,javafx.fxml -jar /home/pi/samaba/test.jar

EclipseでjavaFXプロジェクトを組む方法

1.javaFX - javaFXプロジェクトを作成
  2.プロジェクト名を入力
3.ライブラリ追加でユーザーライブラリのJAVAFX11を配置
4.JAVAFX11のネイティブライブライブラリロケーションを設定
(例)C:\javafx-sdk-11.0.2\bin
5.宣言的UIの言語をFXMLを選択
名前などは適宜変更
 6.完了
 7.XXX.fxmlをシーンビルダーで編集
  XXXXController.javaにコードを記載
 8.実行環境hはjava8を使用 java13を使っても良いがコマンドライン引数にモジュール化の宣言必要
9.実行可能jarを作成 ユーザーライブラリのJAVAFX11はパッケージ化必要
10./home/pi/samba に配置し実行権限付与 ※sambaで共有させたラズベリーパイ側のフォルダに直接出力
11.以下、例に従いテスト実行

$ java --module-path /home/pi/samba/armv6hf-sdk/lib --add-modules=javafx.controls,javafx.fxml -jar /home/pi/samaba/test.jar


12.自動起動の設定

以下コマンドを実行して、autostartファイルの雛形を、ホームディレクトリのコンフィグにコピー

$ mkdir -p ~/.config/lxsession/LXDE-pi
$ cp /etc/xdg/lxsession/LXDE-pi/autostart ~/.config/lxsession/LXDE-pi/

13.autostartを編集

$ sudo nano ~/.config/lxsession/LXDE-pi/autostart


 設定ファイル末尾に追記

@java --module-path /home/pi/samba/armv6hf-sdk/lib --add-modules=javafx.controls,javafx.fxml -jar /home/pi/samaba/test.jar


 
 14.再起動し自動起動を確認

最後に

ポイントはJavaFXの*.soファイルがある場所にパスを通すことと、実行時にモジュール化の引数を入れること

今回の、方法だとmediaplayerが例外が出て動かない。
ffmpegが、インストールされてない?よくわからない
うまく行ったら、また記載する

2020/7/14

JAVAFXを動かす方法が別に見つかったので記載する
以下のコマンドでbellsoftのJDKをインストールでき、sudo update-alternativesで切り替えもできる
前記の方法を見つけるのに相当時間を要したのに.....Orz...


cd /home/pi
wget https://download.bell-sw.com/java/13/bellsoft-jdk13-linux-arm32-vfp-hflt.deb
sudo apt-get install ./bellsoft-jdk13-linux-arm32-vfp-hflt.deb
sudo update-alternatives --config javac
sudo update-alternatives --config java

<注意>
ラズパイのjavafxではなぜかMP3が再生できない。wavに変換してから使用せねばならない
前記の方法でmediaplayerで例外が出ていたのもこの理由..orz.orz...
変換には無料のRealPlayerを使った。広告がうざいが..

<2020/08/03追記>
13のautostartにコマンドを記述する場合、WindowsのBATファイルの様にCD /home/piなどと記述しても意味がない
java -jar /home/pi/samba/test.jar と絶対パスで記述しないと認識もしないし、起動時にエラーも出ない

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0