RPi Maven Install 〜ラズパイでMeven〜

イントロダクション

ラズパイにMavenをインストールする方法を記載いたします。

Introduction

how to install Maven in RPi.

目的

作成したJavaアプリをRPiにMaven InstallでGitから持ってきて起動するため

Goal

To execute apps that mede by java on RPi. using Mavem Install download from Git.

手順

以下のコマンドを叩きます。command as bellow

>apt-get install maven

以上。。。

参考サイト

追伸、Javaのインストールに関しては、必要なJDKをダウンロードしてきた方が早いと思うのでOracleからダウンロードしてしまう方法でやりました。

1.Mavenをwegetコマンドでダウンロード。

・Mavenのサイトで現在のバージョンを確認する

http://maven.apache.org/

※ Date: 2018/09/26

・以下のコマンドでRPiにダウンロードする(RPiにログインしてコマンドを叩く)

weget http://ftp.jaist.ac.jp/pub/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

URLはダウンロードするリンクのアドレスをコピーして取得する

2.ダウンロードファイルを解凍

/optへ解凍するので以下の様なコマンドを叩く

cd /opt
tar -xzvf /downloadPath/apache-mavem3.5.4-bin.tar.gz

シェルを作成

Mavenのパスを環境変数に追加するスクリプトを作成する

sudo nano maven.sh
これでファイルを作成する

export M2_HOME=/opt/apache-maven-3.2.5
export "PATH=$PATH:$M2_HOME/bin"

そして再起動するとMavenが使えるということだが。。。

試したら、この記事を更新します。

失敗でした。

/opt/maven.shが起動できていませんでした。

なので以下のファイルに追記します。

.bashrc

export M2_HOME=/opt/apache-maven-3.2.5
export PATH=$PATH:$M2_HOME/bin

 






<meta property="og:image" content="http://zenryokuservice.com/wp/wp-content/uploads/2018/08/258F0B68-8F66-4385-BF67-A232F26ACC15.jpeg” />



RPi create build enviroment〜ラズパイにビルド環境〜

イントロダクション

ラズパイにSwingアプリケーションをインストールして実行する事を目指して色々やってきました。が今の所「ラズパイ上でビルドした方が良いのでは?」と思ったので以下の様な仕組み(環境)を構築します。

Introduction

My goal is executing Swing app on RPi in CUI. But I did not execute Swing app on RPi in CUI. So I think it is better that build java source at RPi than build java source on mac. That's why I will create build environment on RPi.

作業フロー(Working fllow)

(1)Gitリポジトリの作成(Create Git repository)

(2)Maven をラズパイにインストール

(3)作成したプロジェクトをダウンロードしてビルド

(4)ビルドして作成したJarファイルを起動する








ラズパイ SSH接続メモ

イントロダクション

SSHでの接続メモです。以下の手順でやります。

Introduction

how to connect RPi and Mac using ssh.

 手順(How to)

SSHを有効にします。

$sudo raspi-config

1. ラズパイコンフィグを起動します。(execute "raspi-config")

2.Interfacing Optionsを選択(select one)

3.SSHを選択してOK(select SSH〜)

 

1. LANで接続する(connect LAN RPi and Mac)
2. ネットワークインターフェースを起動する(execute command)
  [/etc/network/interfaces]
  iface eth0 inet dhcp

  # command
  $ sudo ifup eth0

3. SSH接続コマンド実行
   $ssh user_name@ip_address

接続する前にRPiのIPアドレスを確認します。(check RPi IP address)

$ifconfig eth0

ネットワークを起動した時にもIPの確認はできます。(you can see when ifup)

これでSSHの接続ができます。(you can connect)

そしてファイルの送信(And how to send file)

cd targetDir
scp targetFile user_name@host(ip_address):/home/user_name/


IntelliJ add Library for use processing 〜ラズパイのCUIからJavaSwing起動〜

イントロダクション

ラズパイのCUIからJava Swing を起動すると、うまく動きませんでした。

色々と調べた結果

  1. フレームバッファを使用する必要があること
  2. Javaの場合はProcessingというライブラリが使用できる

ということがわかりました。

Introduction

I could not execute Java Swing. from Rpi on CUI.

My memos

I understood as below.

  1. Need to use Fram Buffer
  2. We can use Library that named "Processing" in Java

Processingの使用準備

InteliJ IDEAにライブラリを追加します。File -> ProjectStructure

プロジェクト構成を開いた後にライブラリを選択して「+」を押下する

テキストボックスに「org.processing」と入力して虫眼鏡マーク)をクリック

使用するバージョンを選択してOK

ライブラリが追加されていることを確認する。








ラズパイ Under-voltage detected! 〜エラー対処〜

イントロダクション

表題にある「Under-voltage detected! 」の文言が出力される様になっていましました。これを直します。ラズパイ2でおきた事象です。

I am getting error " Under-voltage detected!"

Introduction

On title. My Rpi2 say "Under-voltage detected!".  I try to change not view one.

解決(Resolution)

電源供給が足りないだけなので電源ケーブルを太くて短いものに変更すると治るらしい。筆者はそのまま使うことにしました。。。

Cause not enough battery. so I use as it is...

参考

 

 








Java Swing ラズパイ 起動メモ

イントロダクション

ラズパイ上で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コマンドについて調べてみる

LXDE

発見

ラズパイ での Swingの問題を解決する手順がある。

まだ試していません。

  1. ラズパイ 起動
  2. xを起動(lxde)
  3. デスクトップを表示せずにターミナルに戻る
  4. 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

 


関連ページ一覧

ラズパイ SSH接続メモ

RPi create build enviroment〜ラズパイにビルド環境〜

RPi Maven Install 〜ラズパイでMeven〜

Java settingup RPi ~ラズパイのJVMを切り替える~

RPi Install Git 〜ラズパイにGitのインストール〜

Install XFCE4 to RPi〜ラズパイにXFCE4のインストール〜

RPi JavaFX execution ~ラズパイ JavaFX自動起動~

イントロダクション

ラズパイでのJavaFXを起動時に実行する手順のメモです。

Introduction

This blog is a Memo for Execute to JavaFX on RPi2 when start up.

設定するもの一覧(List of setting files)

  1. JDK + jfxswt.jar amd etc...
  2. raspi-config(ラズパイの設定)
  3. ./config/lxsession/LXDE-pi/autostart

1.JDKの用意(setting up JDK)

以下のようにOpemJDKに必要なファイルをコピーして配置します。既にファイルを配置しているのであれば飛ばしてよいです。

Setting up as below. if you have jfxrt.jar et... on your JDK then you do not setting up as bellow.

開発環境の構築(setting up Development enviroment)

・サイトより「JavaFX Embedded SDK」をダウンロード(Download left link)

・DLして解凍したら、各資源をいかに配置(Deploy as bellow)

armv6hf-sdk/rt/lib/ext/jfxrt.jar

jre/lib/ext/

armv6hf-sdk/rt/lib/arm/*

jre/lib/arm/

armv6hf-sdk/rt/lib/javafx.platform.properties

jre/lib/

armv6hf-sdk/rt/lib/javafx.properties

jre/lib/

armv6hf-sdk/rt/lib/jfxswt.jar

jre/lib/

※結局は「解凍したフォルダ/rt/lib」をJDK/libにコピペすれば、おっけ。

2.raspi-config

ラズパイの起動設定を行います。

  1. ラズパイにログイン、ターミナル(コマンド画面)を起動します。
  2. 右のコマンドをたたく「sudo raspi-config」
  3. 「Boot Option」→「Desktop \ CLI」→「Desktop Autologin」を選択

3.「./config/lxsession/LXDE-pi/autostart」

このファイルが存在しない場合は、作成してください。そしてこのファイルの中身に以下の記載を追加します。

If you can not find "aoutostart" file then you create one. And write this file as below.

@"実行したいコマンド(アプリ)

※自分の場合はJavaFXを起動したいので、以下のようなシェルスクリプトを作成し実行しましたので以下のようにシェルを書きました。

In my case, I had created shell script on "~/"(My user root dir). And execute JavaFX from this script/

./config/lxsession/LXDE-pi/autostart

@sh ~/javaExe.sh

~/javaExe.sh

"JDK_PATH"/bin/java -jar "JavaFx.jar"




ラズパイ Lチカ〜セットアップ〜

イントロダクション

ラズパイ(CUI) に画面を起動しようと色々やって見たが断念しました。

なので、画面を使わない…アナログボタンを使用する方向で考えることにしました。

Introduction

I gave up to create views on RPi in CUI.

That’s why I will create Application what no gui application like using analog button.

準備(settingup)

  • ラズパイ本体
  • ブレットボード
  • LED(発光ダイオード)

ラズパイをインターネット接続出来るようにします。→GPIOを使うための部品(プログラム)をインストールします。

Lチカの実行

近日、実行します。実行したら、ブログを更新します。

I will try Lチカ soon. And update this blog then. see you.

JavaFX on RPi 〜ラズパイでJavaFX〜

イントロダクション

前回はラズパイにSSHで作成したJarファイルを送信しました。

でもJavaFXは起動できませんでした。それはARM(ラズパイで使用しているCPU)で起動するためのJDKを使用しないといけないのが原因の様です。

Introduction

Last time, we tried to upload jar file to RPi using SSH. But we can not execute JavaFX. Because it is need to use JDK for ARM.

Build tool for ARM

こちらのサイトを参考にクロスコンパイル(OSが違っても同じ様に起動ファイルを作成する)をする準備をします。

acording to this site. we will setup for closs-compile for JavaFX. using 「JavaFX Embedded SDK」

こちらのページからSDKをダウンロードします。今回は「JavaFX Embedded SDK」をダウンロードしました。

そして、JavaFXをラズパイ上で動かすのに必要な設定のチュートリアルを参考にセットアップを行います。※上のチュートリアルはイマイチでしたので下のチュートリアルも参考にします。

チュートリアルその2 

結局、RPi用JDKをRPiにインストール

使用しているPCでARM用のJDKをダウンロード(jdk-8u181-linux-arm32-vfp-hflt.tar.gzをダウンロードしました。)

必要と思われる部分を選択して記載しています。

I have picked up point that I think it will need to execute JavaFX

0.ブートローダを再インストール

sudo apt-get update
sudo apt-get install raspberrypi-bootloader --reinstall

1.JDKをインストールする領域を確保する(prepare enogh room to install JDK)

2.デスクトップを使用しない設定をする(using CUI mode)

3.「raspi-config」で「Advanced Option」→「Memory Split」を選択し「50/50」に設定する。→設定後に再起動する("raspi-config → select "Advanced Option" → "Memory Split" → set 50/50 → reboot RPi)

4.SSHサーバーを起動する設定をする( setup using SSH server)

5.インストールしたJDKにSDKを追加する

・サイトより「JavaFX Embedded SDK」をダウンロード(Download left link)

・SSHでRPiにアップロード (upload to RPi using SSH)

・unzipで解凍「sudo unzip armXXXX-sdk-XXX.zip 解凍先」(unzip on RPi using "unzip" command like "sudo unzip SDK.zip 「unzip directory」".

$cd target directory
$unzip SDK.zip

・SDKの中身を下の表にある様に配置する

armv6hf-sdk/rt/lib/ext/jfxrt.jar

jre/lib/ext/

armv6hf-sdk/rt/lib/arm/*

jre/lib/arm/

armv6hf-sdk/rt/lib/javafx.platform.properties

jre/lib/

armv6hf-sdk/rt/lib/javafx.properties

jre/lib/

armv6hf-sdk/rt/lib/jfxswt.jar

jre/lib/

※結局は「解凍したフォルダ/rt/lib」をJDK/libにコピペすれば、おっけ。

ちなみに自分が使用したコマンドは以下の通り

cp -r SDK/rt/jre/lib/ext /usr/local/jdk1.8XXXX/jre/lib
cp -r SDK/rt/jre/lib/arm /usr/local/jdk1.8XXXX/jre/lib
cp SDK/rt/jre/lib/javafx.platform.properties /usr/local/jdk1.8XXXX/jre/lib
cp SDK/rt/jre/lib/jfxswt.jar /usr/local/jdk1.8XXXX/jre/lib

そして以下のコマンドで実行。 execute like this.

sudo /<path to JDK>/bin/java -Djava.ext.dir=<arm-sdk dir>/rt/lib/ext -jar <executable JAR PATH>.jar

自分の場合は以下の様になりました。

/usr/local/jdk1.8.0_181/bin/java -Djava.ext.dir=./sdk/rt/lib/ext -jar RpiCtl.jar

これでもダメだった。。。

java.lang.UnsatisfiedLinkErrorが出力され動きませんでした。

調べた結果「libgtk-x112.0.so」ファイルがないのが原因でした。

なんでも32bit版でSDKをダウンロードするとついていない様です。。。

そんなわけでインストールします。

But I can not execute RpiCtl.jar...

get java.lang.UnsatisfiedLinkError  after execute jar

becase i have not "libgtk-2.0-0.so" that's why I will install one as bellow.

sudo apt-get install libgtk2.0-0

改めて実行!!! でもダメだった。。。

ここのページを参考にしました。

I hava got reslution from this page

XWindowシステムをCUIなのでインストールしていません。なのでJavaFXが動かない様です。。。

>sudo apt update
>sudo apt install raspberrypi-ui-mods

これでもダメでした。。。

仕方ないので (there is no way)

一度このやり方を断念します。

下の記事は不要な設定なので無視してください。

開発環境の構築(setting up Development enviroment)

・サイトより「JavaFX Embedded SDK」をダウンロード(Download left link)

・DLして解凍したら、各資源をいかに配置(Deploy as bellow)

armv6hf-sdk/rt/lib/ext/jfxrt.jar

jre/lib/ext/

armv6hf-sdk/rt/lib/arm/*

jre/lib/arm/

armv6hf-sdk/rt/lib/javafx.platform.properties

jre/lib/

armv6hf-sdk/rt/lib/javafx.properties

jre/lib/

armv6hf-sdk/rt/lib/jfxswt.jar

jre/lib/

※結局は「解凍したフォルダ/rt/lib」をJDK/libにコピペすれば、おっけ。

各IDEでの設定(Setting for IDE)

Eclipse

NetBeans

InteliJ IDEA

今回は、InteliJ IDEAを使用します。

・InteliJ IDEAを開き「IntelliJ IDEA -> Prefference」を開きます。

・Open InteliJ and select "IntelliJ IDEA -> Preference"

・同様に「Plugins」を選択します。

・And select "Plugins"

・リポジトリをブラウズします。

・Browze Rpositories

検索キーワード画面の左上に「Glu」と入れておくと楽です。

「Restart IntelliJ IDEA」と表示されたボタンがあるので押下再起動します。

restart IntelliJ IDEA from "Restart IntelliJ IDEA" button.

もともと書いていたソースは以下になります。

package rpictl.view;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;

import java.util.ResourceBundle;

public class RpiCtl extends Application {
    /** 画面の横サイズ */
    private static final int VIEW_WIDTH = 300;
    /** 画面のたてサイズ */
    private static final int VIEW_HEIGHT = 300;
    /** プロパティファイル名 */
    private static final String RPI_CTL_PROPERTY = "RpiCtl";
    /** リソースバンドル */
    private static ResourceBundle bundle;

     /**
     * Applicationクラスのメソッドをオーバーライド
     * @param primary 一番下肉るステージ
     */
    @Override
    public void start(Stage primary) {
        // ステージ上に載せるグループ(ペインの様なもの)
        Group root = new Group();
        root.getChildren().add(new Label("Hello World"));
        Scene scene = new Scene(root, VIEW_WIDTH, VIEW_HEIGHT);
        primary.setScene(scene);
        // フルスクリーン
        primary.setFullScreen(true);
        primary.show();

        // プロパティファイルのロード
        bundle = ResourceBundle.getBundle(RPI_CTL_PROPERTY);
        System.out.println("Properties: " + bundle.getString("test"));
    }

    /**
     * 起動するデバイス(ディスプレイ)のサイズを取得、起動する。
     *
     * @param root ルート・ペイン
     * @return Sceneクラス
     */
    private Scene createBaseScene(Group root) {

        return new Scene(root, VIEW_WIDTH, VIEW_HEIGHT);
    }

    /**
     * メインメソッド、JavaF≈を起動する
     *
     * @param args プログラム引数
     */
    public static void main (String[] args) {
        launch(args);
    }
}

新しくプロジェクトを作成します。初期画面(ダイアログ)から以下の様なダイアログを開き、「Gluon => Gluon Mobile」を選択します。(今回はラズパイにデプロイしたいので。。。)

 

 

 

 



RPi and JavaFX sample of deployment 〜ラズパイにサンプルデプロイ〜

イントロダクション

RPi(ラズパイ)にJavaFXで作成した画面をデプロイして起動するテストを行います。

〜RPiのセットアップ〜

ラズパイのインストールなど(コンソールのみ)

ラズパイでWifi接続

ラズパイのセットアップで使用したコマンドなど

Introcuction

I will deproy to RPi and execute JavaFX on RPi to testing deployment java apps.

〜Abount setting up RPi〜

・Installing RPi in CUI

・settingup wifi on RPi

・Memos abount commands for setting up RPi

詰まったところ

1.「RPi(ラズパイ)にLAN検索のための設定(インストールなど)をしていなかった。」

1.My RPi has not "nslookup" and "dig". That's why I can not find my Mac.

「nslookup」「dig」コマンドのインストール

$sudo apt-get install dnsutils

でインストール終了。

2.RPiがMac (使用している端末)から見つからなかった。

2.My Mac can not find RPi.

以下の様にコマンドを叩き探しました。

>arp -an

下の様に出力される

ポイントは下の様なIPアドレスを参考にする

>ifconfig

RPi(ラズパイ)で上のコマンドを叩く、そしてIPアドレスから対象のものを見つける

use "ifconfig" and find IP Mac and RPi.

>hostname

RPiで上のコマンドを叩きラズパイの端末名(ホスト名)を取得する

check RPi host name. my RPi host name is "raspberrypi".

今回は「raspberrypi」がそれでした。

※hostnameは変更が可能です。

>ssh pi@rasbberrypi

>sudo raspi-config

このコマンドでSSHが動いているかどうか確認、設定する

check ssh in "ssh pi@raspberrypi" command.

and "sudo raspi-config" to setting about SSH server.

参考サイト

Mac(Windows)でRPiにアクセスする

>ssh <RPiのユーザー>@<IPアドレス or ホスト名>

実行したコマンド

>ssh pi@192.168.XXX.XXX

この後に「続けますか?」と質問があるので「yes」と入力

<例>

 

しかし、ログインしているユーザーのみだったのでログインできませんでした。

But RPi is using "pi", so I can not login RPi. cause I have already logged in RPi.

<LANケーブルの設定>

</etc/network/interfaces>
#eth0を固定値でIPアドレスを設定する → これは接続できませんでした。
#Can not access RPi when I tried as bellow
iface eth0 inet static
address 192.168.XXX.XXX # 自分は192.168.88.88と設定しました。
netmask 255.255.255.0
gateway 192.168.XXX.254 # "XXX"は「address」と同じものにします。

#eth0をDHCPで設定する Using "eth0" for DHCP
iface eth0 inet dhcp →これは繋がった  I can connect RPi

 

sudo ifup eth0で"eth0"を起動します。※eth0を定義していない場合

if you did not set "eth0" then you write like this.

3.ユーザーがすでにログインしているユーザーのみだった

3."pi" user have been already logged in RPi.

ユーザーを新たに作成する。

create user on RPi.

ユーザー追加

sudo adduser "ユーザー名"

ユーザーパスワード(sudo権限あり)

sudo gpasswd -a "ユーザー名"

 改めて接続する Try again connect RPi

>ssh pi@192.168.XXX.XXX

以下の様な文言が出ました。赤字は隠した部分です。

The authenticity of host '192.168.XX.XX (192.168.XX.XX)' can't be established.
ECDSA key fingerprint is SHA256:KXxaXjFgIEb7I6KP5+kkGJUcYizlE8uaLUgV/z7wlK4.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
<<「yes」と入力 >>
Warning: Permanently added '192.168.XX.XX' (ECDSA) to the list of known hosts.
takunoji@192.168.XX.XX's password: 
<<パスワードを入力(input password)>> 
Linux raspberrypi 4.14.66+ #1137 Fri Aug 24 16:31:57 BST 2018 armv6l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

こんな感じで接続完了 you can see it as bellow

SSH接続の参考にしたサイト

そして、いよいよデプロイ Let's Deploy!

作成したJarファイルのディレクトリに移動します。

cd ~/ProjectX/out/artifact/XXX.jar

そして、下のコマンドを叩きます

### scp XXX.jar ユーザー名@192.168.XX.XX:/home/ユーザー名 ###
scp RpiCtl.jar takunoji@192.168.XX.XX:~/

ファイルのアップロードが完了しました。just you finished deploy your jar file.

OK! Let's execute jar file now!!

java -jar RpiCtl.jar

But I can not see javaFx view. cause as bellow だが、起動できず。。。

OpenJDKのJavaFX for ARM~

ARM用のJavaFXが必要なんですと。。。