RPi EJDK install 〜ラズパイにJavaSE Embeddedのインストール〜

今回は、JavaSE Embedded(EJDK)をインストールします。

関連記事

EJDKのダウンロード
RPiコマンドメモ -> ラズパイにSSH接続、ファイル送信

参考サイトはオラクルのJavaSE Embeddedインストールです。英語なので翻訳して読みます。

Step1:通常のJDKインストール

参考サイトでは、通常のJDKがインストールされている必要があると書いてあるのでJava8のインストールを行います。
参考サイトはこちらです、ラズパイフォーラムページです。
前提として、今回のJavaSE EmbeddedはJava8です。
jdk-8u231-linux-arm32-vfp-hflt.tar.gz
jdk-8XXXXと書いてあるものはJava8です。

そして、JavaSE Embeddedは8が最新で最後になるらしい。。。です。

なので、通常のJava8をインストールします。OpenJDKを使用します。
なので、ラズパイにログインしてから以下のコマンドを叩きます。
sudo apt-get install -y galternatives openjdk-8-jdk

そして、インストールできたか確認します。
java -version

確認が取れたら、JavaSE Embedded(EJDK)のインストール準備が完了です。(スペックなどは各自で確認してください)

EJDKインストール

今回はラズパイのドキュメント直下にインストールディレクトリを作成します。
~/Javaというディレクトリを作成します。「~/」というのはログインしているユーザーのドキュメント直下という意味になります。
つまりユーザー「pi」でログインしているのであれば「/home/pi/Java」というディレクトリを作成します。

mkdir ~/Javaというコマンドで作成します。
そして、mvコマンドでインストールするファイルを移動します。

そして、インストールファイルを解答します。

gunzip ファイル名(.gzでも良い)とコマンドを叩くと、指定ファイルもしくは(.gz)そのディレクトリにある全てのgzファイルを解凍します。

同様にtarコマンドで解凍します。
tar -xvf ファイル名

環境設定ファイル(環境変数)

参考サイトはこちらです、ラズパイフォーラムページです。

こちらのページには以下のような記述がありました。

クイックガイド
ただシステムを実行する必要がある性急な人のために、ここであなたができることがあります:
すべてのグローバル環境変数、つまりすべてのユーザーに影響する変数を/ etc / environmentに入れます
このファイルはシェルではなく PAMによって読み取られることに注意してください。ここではシェル拡張を使用できません。たとえば、MAIL = $ HOME / Maildir /は機能しません!
PAMが処理できる些細なケース以外に、すべてのユーザーの環境を構成する方法の問題に対する、シェルに依存しない、ログインに依存しないソリューションはありません。
すべての一時的なシェル設定(エイリアス、関数、シェルオプション)を〜/ .bashrcに入れます
すべての環境変数を〜/ .profileに入れます
ファイル〜/ .bash_profileを作成または編集し、コマンドを含めます。

なので、「evironment」ファイルにEJDKのパスを設定します。
sudo nano /etc/environment
EJDK_HOME=/home/pi/Java/ejdk1.8.0_211/bin

そして、上記でインストールしたJDK(EJDKではない)を参照するように環境変数のJAVA_HOMEを設定します。
</etc/environment>

JJAVA_HOME=/usr/lib/jvm/java-8-openjdk-armhf/bin
EJDK_HOME=/home/pi/Java/ejdk1.8.0_211/bin

jrecreate.sh --help実行結果

JREの生成

参考ページ(サイト)はオラクルのJRE生成ページです。

そして、JREの生成で実行するコマンドはExample3のコマンドを実行します。

JavaFX controls and Java SE locales added to server JVM and compact3 profile.

% installDir/ejdk<version>/bin/jrecreate.sh \
    --dest /tmp/exampleJRE2 \
    --profile compact3 \
    --vm server \
    --extension fx:controls \
    --extension locales 

インストールしたいのはJavaFXのコントロールとJVMサーバーなので。。。
<実際に実行したコマンド>
※「(バックスラッシュ)」は改行しても改行したこと(Enterキーを押したこと)にしない(エスケープする)ためにつけています。

cd $EJDK_HOME
bin/jrecreate.sh --dest /tmp/exampleJRE2 \
    --profile compact3 \
    --vm server \
    --extension fx:controls \
    --extension locales

そして、実行して見た所以下のようなエラーが出ました。

JREの作成に失敗しました。ターゲットlinux_arm_sfltはVM serverをサポートしていません。

改めてヘルプを見ると色々と修正する必要がありました。。。

使用方法: jrecreate --help | --dest  [options]
オプションは次のとおりです:
  -?, -h, --help             このヘルプ・メッセージを表示します。
  -d, --dest           Javaランタイムのターゲット・ディレクトリを指定します。
  --ejdk-home          ejdkディストリビューションのルートのパスを指定します。
  -g, --debug                Javaレベルのデバッグ・サポートを組み込みます。
  -k, --keep-debug-info      JRE生成中にクラス/jarファイルからデバッグ属性を除去しません。
                               署名付きjarファイルには適用されません。
  -n, --dry-run              リクエストされた操作を試験的に実行します。
  --no-compression           jarファイルを圧縮しません。署名付きjarファイルには適用されません。
  -p, --profile        オプション。プロファイルのいずれかを生成対象として指定します。
                               有効なプロファイル名: compact1、compact2、compact3。
                               指定しない場合、完全なJREが作成されます。
  -v, --verbose              詳細な出力を有効にします。
  --vm               ターゲット・ランタイムで使用するVMを指定します。
                               有効なオプション: minimal、client、server、all。
                               デフォルトは、compact1とcompact2に対してはminimal、compact3に対してはclient、JREに対してはallです。
  -x, --extension      生成されるランタイムに含めるオプション・コンポーネントを1つ以上選択します。
                               複数のコンポーネントを選択するために、このオプションには単独の値だけで
                               なく、カンマ区切りリスト(スペースなし)も指定できます。
                               有効な拡張機能:
                                   sunpkcs11 - Cryptographic Token Interface Standard (PKCS 11)プロバイダ
                                   gcf - 汎用接続フレームワーク・オプション・パッケージ(JSR-197)
                                   locales - すべてのJava SEロケール
                                   charsets - 拡張文字エンコーディング
                                   sunec - 楕円曲線暗号方式プロバイダ
                                   nashorn - Nashorn JavaScriptエンジン

結局のところは以下のようなコマンドになりました。

% installDir/ejdk<version>/bin/jrecreate.sh  --dest /tmp/ejre8 --extension locales 

生成したJREは/tmp/ejre8というフォルダに出力されるようにコマンドを実行しました。

どうやらJREの生成ができたようです。(Fullversion)

でわでわ。。。