2016-03-08

NetBeans IDEでのネイティブ・パッケージング

Java でプログラミングをする一番大きな理由は、(自分にとっては)クロスプラットフォームな言語だからです。UI はプログラミングの一部であると思っているので、最も身近なデスクトップの GUI にフォーカスして取り組んでいますが、JavaFX を使うようになってからは、手軽に JavaFX を扱える NetBeans IDE ばかりを使うようになりました。NetBeans IDE では、アプリケーションをビルドするとプロジェクトディレクトリの中に dist というディレクトリを作成し、アプリケーション全てをまとめた jar ファイルを作成してくれます。

これだけでも結構重宝するのですが、NetBeans IDE が動作しているプラットフォーム (OS) に対応したインストールパッケージを作成する機能もあります。これを NetBeans IDE では「ネイティブ・パッケージング」と呼んでいます。結構嬉しい機能です。

上記サイトでは Windows を例にして、詳しく説明がされていますので、ここでは RPM 系 Linux である Fedora の場合について紹介したいと思います。Linux 上で動作する NetBeans IDE では、このネイティブ・パッケージングで Red Hat 系の RPM あるいは Debian 系の deb パッケージを作成します。

動作環境は次の通りです。

  • OS: Fedora 23 (x86_64)
  • Java: jdk1.8.0_74-1.8.0_74-fcs.x86_64 (Oracle)
  • IDE: NetBeans IDE 8.1

まず、RPM パッケージ作成に必要な rpm-build パッケージをインストールしておきます。

$ rpm -qa | grep rpm-build
rpm-build-4.13.0-0.rc1.12.fc23.x86_64
rpm-build-libs-4.13.0-0.rc1.12.fc23.x86_64
$ 

RPM パッケージ化するサンプルとして、JavaFX のサンプルである BrickBreaker を使います。新規プロジェクトを作成する際に、カテゴリの下の方に「サンプル」がありますので JavaFX を選びプロジェクトの欄から BrickBreaker を選んで、「次へ」ボタンをクリックします。

「終了」ボタンをクリックして、BrickBreaker プロジェクトを作成します。

ファイルタブでプロジェクト BrickBreaker を選択、右クリックしてプロパティを選択してプロジェクトのプロパティ・ウィンドウを開きます。

左側のカテゴリのリストから、「ビルド」→「デプロイメント」を選択します。

「ネイティブ・パッケージの有効化」をチェックします。

「アイコンとスプラッシュ・イメージ」の「編集」ボタンをクリックして。「ネイティブ・パッケージ・アイコン」の欄に適当なアイコン画像を指定しておきます。

ここでは、以下のような Linux のマスコット Duke の 128x128 ピクセルの PNG 画像を指定しています。

ビルドされるパッケージの名前に付加されるバージョン番号は、カテゴリ「アプリケーション」の画面で指定します。ここでは 1.0 のままにします。

プロジェクト BrickBreaker を選択して、メニューから「実行」→「プロジェクト(BrickBreaker)を消去してビルド」を選択して、プロジェクトをビルドします。

プロジェクトタブでプロジェクト BrickBreaker を選択、右クリックして「パッケージとして」→「RPMパッケージ」を選択します。

すると、「出力」ウィンドウに下記のようなメッセージが表示され、しばらく待つと「ビルド成功」と緑字で表示されて終了します。RPM パッケージは NetBeansProjects/BrickBreaker/dist/bundles 以下に作成されています。

ant -f /home/bitwalk/NetBeansProjects/BrickBreaker -Djar.archive.disabled=true -Dnative.bundling.type=rpm build-native
build-native:
init:
deps-clean:
Updating property file: /home/bitwalk/NetBeansProjects/BrickBreaker/build/built-clean.properties
Deleting directory /home/bitwalk/NetBeansProjects/BrickBreaker/build
clean:
init:
deps-jar:
Created dir: /home/bitwalk/NetBeansProjects/BrickBreaker/build
Updating property file: /home/bitwalk/NetBeansProjects/BrickBreaker/build/built-jar.properties
Created dir: /home/bitwalk/NetBeansProjects/BrickBreaker/build/classes
Created dir: /home/bitwalk/NetBeansProjects/BrickBreaker/build/empty
Created dir: /home/bitwalk/NetBeansProjects/BrickBreaker/build/generated-sources/ap-source-output
Compiling 10 source files to /home/bitwalk/NetBeansProjects/BrickBreaker/build/classes
警告: [options] ブートストラップ・クラスパスが-source 1.6と一緒に設定されていません
警告1個
Copying 45 files to /home/bitwalk/NetBeansProjects/BrickBreaker/build/classes
compile:
Created dir: /home/bitwalk/NetBeansProjects/BrickBreaker/dist
Detected JavaFX Ant API version 1.3
Launching  task from /usr/java/jdk1.8.0_74/jre/../lib/ant-javafx.jar
Warning: From JDK7u25 the Codebase manifest attribute should be used to restrict JAR repurposing.
         Please set manifest.custom.codebase property to override the current default non-secure value '*'.
Launching  task from /usr/java/jdk1.8.0_74/jre/../lib/ant-javafx.jar
Note: To create native bundles the  task may require external tools. See JavaFX 2.2+ documentation for details.

Launching  in native packager mode...
Copying 1 file to /home/bitwalk/NetBeansProjects/BrickBreaker/build/icon
Source native icon reference: /home/bitwalk/画像/duke3D-128.png
Processed native icon reference: /home/bitwalk/NetBeansProjects/BrickBreaker/build/icon/BrickBreaker.png
ベースJDKがありません。パッケージはシステムJREを使用します。
ベースJDKがありません。パッケージはシステムJREを使用します。
パッケージ(.rpm)は次に保存されました: /home/bitwalk/NetBeansProjects/BrickBreaker/dist/bundles
jfx-deployment-script:
jfx-deployment:
jar:
jfx-rebuild:
jfx-build-native:
ビルド成功(合計時間: 1分17秒)

早速インストールしてみます。なお、このパッケージには実行に必要なランタイム (JRE) が含まれていて、インストール先は /opt 以下になります。

[bitwalk@notepc ~]$ cd NetBeansProjects/BrickBreaker
[bitwalk@notepc BrickBreaker]$ ls
build  build.xml  dist  manifest.mf  nbproject  src
[bitwalk@notepc BrickBreaker]$ cd dist/bundles
[bitwalk@notepc bundles]$ ls
brickbreaker-1.0-1.x86_64.rpm
[bitwalk@notepc bundles]$ su
パスワード:
[root@notepc bundles]# dnf install brickbreaker-1.0-1.x86_64.rpm
メタデータの期限切れの確認は、2:16:33 前の Sun Mar  6 10:44:44 2016 に実施しました。
依存性が解決されました。
================================================================================
 Package                アーキテクチャ
                                   バージョン            リポジトリ        容量
================================================================================
インストール:
 alsa-lib               i686       1.0.29-2.fc23         fedora           392 k
 brickbreaker           x86_64     1.0-1                 @commandline      52 M
 glibc                  i686       2.22-11.fc23          updates          4.3 M
 libX11                 i686       1.6.3-2.fc23          fedora           616 k
 libXau                 i686       1.0.8-5.fc23          fedora            34 k
 libXext                i686       1.3.3-3.fc23          fedora            43 k
 libXi                  i686       1.7.6-1.fc23          updates           46 k
 libXrender             i686       0.9.9-2.fc23          fedora            30 k
 libXtst                i686       1.2.2-5.fc23          fedora            25 k
 libgcc                 i686       5.3.1-2.fc23          updates           97 k
 libxcb                 i686       1.11.1-1.fc23         updates          206 k
 nss-softokn-freebl     i686       3.22.2-1.0.fc23       updates          197 k

トランザクションの要約
================================================================================
インストール  12 パッケージ

合計容量: 58 M
総ダウンロード容量: 5.9 M
インストール済み容量: 207 M
これでいいですか? [y/N]: y
パッケージをダウンロードしています:
(1/11): libXext-1.3.3-3.fc23.i686.rpm           277 kB/s |  43 kB     00:00    
...
(省略)
...
(11/11): glibc-2.22-11.fc23.i686.rpm            2.5 MB/s | 4.3 MB     00:01    
--------------------------------------------------------------------------------
合計                                            626 kB/s | 5.9 MB     00:09     
トランザクションの確認を実行中...
トランザクションの確認に成功しました。
トランザクションのテストを実行中...
トランザクションのテストに成功しました。
トランザクションを実行中...
  インストール    : libgcc-5.3.1-2.fc23.i686                               1/12 
...
(省略)
...
  検証中          : nss-softokn-freebl-3.22.2-1.0.fc23.i686               12/12 

インストール:
  alsa-lib.i686 1.0.29-2.fc23      brickbreaker.x86_64 1.0-1                   
  glibc.i686 2.22-11.fc23          libX11.i686 1.6.3-2.fc23                    
  libXau.i686 1.0.8-5.fc23         libXext.i686 1.3.3-3.fc23                   
  libXi.i686 1.7.6-1.fc23          libXrender.i686 0.9.9-2.fc23                
  libXtst.i686 1.2.2-5.fc23        libgcc.i686 5.3.1-2.fc23                    
  libxcb.i686 1.11.1-1.fc23        nss-softokn-freebl.i686 3.22.2-1.0.fc23     

完了しました!
[root@notepc bundles]# 

GNOME デスクトップの「アクティビティ」をクリックして、アプリケーションを表示すると、Duke のアイコンの BrickBreaker が追加されています。

下記のように BrickBreaker が起動しました。

 

0 件のコメント: