Javaデスクトップ・アプリケーションのパッケージ化と配布多くの初級プログラマが尋ねる質問の1つに、「IDEでアプリケーションを作成しましたが、これをIDEの外部のコマンド行から動作させるにはどうすればよいですか」というものがあります。同様に、「このアプリケーションを他のユーザーに、IDE全体を一緒に提供することなく配布するにはどうすればよいですか」と尋ねる場合もあります。 これらの質問への答えは比較的単純ですが、必ずしも明白ではありません。このドキュメントでは、IDEを使用してアプリケーションを配布やデプロイメントのために準備する方法の基本を説明することによって、これらの質問に対処します。さらに、このドキュメントでは、システムを構成するために必要になる可能性のある(または、アプリケーションのユーザーに渡すことが必要になる可能性のある)情報を提供します。ここでは、ユーザーが次の方法でアプリケーションにアクセスできるように、アプリケーションをデプロイするためのいくつかの異なるアプローチを示します。
目次 ![]()
このチュートリアルを完了するには、次の表に示すソフトウェアとリソースが必要です。
実行可能なJARファイルの作成チュートリアルのこの部分では、IDEで配布可能なアプリケーションを作成した後、そのアプリケーションをIDEの外部から実行するための方法を示します。このアプリケーションを実行可能なJARファイルの形式でパッケージ化します。 JARファイルは、複数のファイルやフォルダを含めることができるアーカイブ・ファイルです。JARファイルはzipファイルに似ていますが、JARファイルには、Javaアプリケーションを配布するために役立つ追加の属性を含めることができます。これらの属性には、JARファイルのデジタル署名、追加の圧縮、マルチプラットフォーム互換性などが含まれます。 この課題では、IDEプロジェクトを作成した後、そのプロジェクトに2つのあらかじめ記述されたJavaソース・ファイルを配置します。次に、クラスをコンパイルし、実行可能なJARファイルをビルドします。その後、JARファイルをIDEの外部から実行する方法について学習します。 このチュートリアルで使用されるクラスには、テキスト・ファイル内部のテキストまたは正規表現パターンを検索するために使用できる、GNU grepユーティリティの機能が実装されています。このプロジェクトにはコマンド行とGUIの両方のバージョンのアプリケーションが含まれているため、アプリケーションを実行するための異なる方法を確認できます。 既存のソースを使用したプロジェクトの作成
プロジェクトがIDEで開かれ、「プロジェクト」ウィンドウに表示されます。プロジェクトの「ソース・パッケージ」ノードを展開することによって、プロジェクトの内容を調べることができます。ここには、GrepとxGrepという名前のクラスが表示されます。Grep.javaは、このアプリケーションのコンソール・バージョンです。xGrep.javaはこのアプリケーションのGUIバージョンであり、Grep.javaで定義されたメソッドを使用します。 プロジェクトの構成次のような、実行する必要のあるいくつかの構成手順があります。
Javaプラットフォームの確認このプロジェクトは、Java 6プラットフォーム上でコンパイルおよび実行する必要があります。そのため、このプロジェクトのプラットフォームとしてJava 6が使用されることを確認する必要があります。
メイン・クラスの設定ユーザーが(JARファイルをダブルクリックするか、またはコマンド行で「java -jar AnotherGrep.jar」と入力することによって) JARファイルを容易に実行するには、そのJARのマニフェストファイル内でメイン・クラスを指定する必要があります。(マニフェストは、アプリケーションを実行するときにjava起動プログラムに役立つJARファイルに関する情報を含む、JARファイルの標準の部分です。)メイン・クラスは、java起動プログラムがアプリケーションの実行を開始するエントリ・ポイントとして機能します。 プロジェクトをビルドすると、IDEによってJARファイルがビルドされ、マニフェストが含められます。プロジェクトのメイン・クラスを設定する場合は、そのメイン・クラスがマニフェストで指定されていることを確認してください。 プロジェクトのメイン・クラスを設定するには:
このチュートリアルで後でプロジェクトをビルドすると、マニフェストが生成され、次のエントリが含まれます。 Main-Class: anothergrep.xGRep プロジェクトのビルドおよびJARファイルの作成これでソースの準備ができ、プロジェクトが構成されたので、次にプロジェクトをビルドします。 プロジェクトをビルドするには:
プロジェクトをビルドすると、次が行われます。
注意: IDEの「ファイル」ウィンドウで、マニフェストの内容を表示できます。プロジェクトをビルドした後に、「ファイル」ウィンドウに切り替え、dist/AnotherGrep.jarに移動します。JARファイルのノードを展開し、META-INFフォルダを展開します。次に、MANIFEST.MFをダブルクリックしてソース・エディタのマニフェストを表示します。 Main-Class: anothergrep.xGrepマニフェスト・ファイルの詳細を調べるには、Javaチュートリアルのこの章を読んでください。 JARファイルの実行と配布IDEの内部でのアプリケーションの実行IDEでアプリケーションを開発する場合は通常、配布する前に、それらのアプリケーションをテストして調整する必要があります。IDEからアプリケーションを実行することによって、作業中のアプリケーションを容易にテストできます。 IDEでAnotherGrepプロジェクトを実行するには、「プロジェクト」ウィンドウでプロジェクトのノードを右クリックし、「実行」を選択します。 「xGrep」ウィンドウが開きます。「Browse」ボタンをクリックすると、テキストのパターンを検索するファイルを選択できます。「Search Pattern」フィールドに、一致を検索するテキストまたは正規表現パターンを入力し、「Search」をクリックします。それぞれの一致の結果が「xGrep」ウィンドウの「Output」領域に表示されます。 このアプリケーションで使用できる正規表現に関する情報は、ここや、その他の多くの場所で入手できます。 IDEの外部でのアプリケーションの実行アプリケーションの開発を終了したら、配布する前に、そのアプリケーションがIDEの外部でも動作することの確認が必要になる場合があります。 次の手順に従うことによって、IDEの外部でアプリケーションを実行できます。
「xGrep」ウィンドウが開いたら、アプリケーションが正常に起動されたことがわかります。 「xGrep」ウィンドウが開かない場合は、システムにJARファイルとJava Runtime Environmentの間のファイルの関連付けが存在しない可能性があります。後述するJARファイルの関連付けのトラブル・シューティングを参照してください。 アプリケーションの他のユーザーへの配布これでIDEの外部でアプリケーションが動作することが確認されたため、そのアプリケーションを配布する準備ができました。
注意: アプリケーションがJDKに含まれているライブラリ以外の追加ライブラリに依存している場合は、配布にそれらのライブラリも含める必要があります(この例には該当しません)。これらのライブラリの相対パスは、IDEでアプリケーションを開発しているときにJARのマニフェスト・ファイルのclasspathエントリに追加されます。起動時に、これらの追加ライブラリが指定されたクラスパス(つまり、相対パス)に見つからない場合、アプリケーションは起動されません。 Javaアプリケーションの起動この課題の目標は、コマンド行からアプリケーションを起動するためのいくつかの方法を示すことです。 この課題では、Javaアプリケーションを起動するための次の2つの方法を示します。
コマンド行からのアプリケーションの起動javaコマンドを使用して、コマンド行からアプリケーションを起動できます。実行可能なJARファイルを実行する場合は、このコマンドの-jarオプションを使用します。 たとえば、AnotherGrepアプリケーションを実行するには、次の手順を行います:
これらの手順に従ってもアプリケーションが実行されない場合は、次のいずれかを実行する必要があります。
スクリプトからのアプリケーションの起動配布するアプリケーションがコンソール・アプリケーションである場合は、そのアプリケーションをスクリプトから起動するのが便利なことに気付くかもしれません(特に、そのアプリケーションが、実行のために長く、複雑な引数を必要とする場合)。この項では、Grepプログラムのコンソール・バージョンを使用します。その場合、JARファイルに引数(検索パターンとファイル・リスト)を渡す必要がありますが、それはこのスクリプトで呼び出されます。コマンド行での入力を減らすために、テスト・アプリケーションを実行するのに適した単純なスクリプトを使用します。 まず、アプリケーション内のメイン・クラスをコンソール・バージョンのクラスになるように変更し、JARファイルを再ビルドする必要があります。
これらの手順を完了すると、JARファイルが再ビルドされ、JARファイルのマニフェストのMain-Class属性がanothergrep.Grepを指すように変更されます。 BASHスクリプト -- UNIXおよびLinuxマシン用DeploymentTutorial.zipファイルの内容を抽出したシステム上のフォルダ内に、grep.sh bashスクリプトがあります。それを見てください。 #!/bin/bash java -jar dist/AnotherGrep.jar $@ 1行目は、どのシェルを使用してこれを解釈するかを明示しています。2行目は、IDEによってPROJECT_HOME/distフォルダ内に作成されたJARファイルを実行します。$@は単純に、指定されたすべての引数を、それぞれ引用符で囲んでコピーします。 このスクリプトでは、JavaバイナリがPATH環境変数に含まれていることを想定しています。このスクリプトが正しく動作しない場合は、PATH環境変数の設定を参照してください。 bashスクリプトの詳細は、ここを参照してください。 Windowsマシン用の .batスクリプトMicrosoft Windowsシステムでは、バッチ・ファイルに一度に9つの引数しか渡すことができません。9つを超える引数がある場合は、JARファイルを複数回実行する必要があります。 これを処理するスクリプトは次のようになります。 @echo off set jarpath="dist/AnotherGrep.jar" set pattern="%1" shift :loop if "%1" == "" goto :allprocessed set files=%1 %2 %3 %4 %5 %6 %7 %8 %9 java -jar %jarpath% %pattern% %files% for %%i in (0 1 2 3 4 5 6 7 8) do shift goto :loop :allprocessed このスクリプトは、DeploymentTutorial.zipファイルの内容を抽出したシステム上のフォルダ内にgrep.batとして含まれているため、試してみることができます。 9つの引数は、このバッチ・ファイルの内部で%<ARG_NUMBER>で表されています。ここで、<ARG_NUMBER>は<0-9>の範囲内にある必要があります。%0は、スクリプト名のために予約されています。 プログラムに一度に(1回のループで) 9つの引数しか渡されないことがわかります。for文は、次のループに備えて単純に引数を9シフトします。if文によって空のファイル引数が検出されると(処理するファイルがそれ以上ない場合)、ループは終了します。 バッチ・スクリプト処理の詳細は、このページを参照してください。 Java Web Start用のアプリケーションのパッケージ化Java Web Startは、シングル・クリックでWebブラウザからJavaアプリケーションを実行するために使用されるテクノロジです。Java Web Startを使用したデプロイメントのためのアプリケーションのパッケージ化の詳細は、NetBeans IDEでのJava Web Startの有効化を参照してください。ここでは、Java Web Startを使用してアプリケーションをデプロイ可能にするために従う必要のある簡単な手順のみを示します。
トラブル・シューティングのヒントJARファイルの関連付けの指定ほとんどのシステムでは、実行可能なJARファイルを単純にダブルクリックすることによって、そのJARファイルを実行できます。JARファイルをダブルクリックしても何も起こらない場合は、次の2つの理由のどちらかが原因である可能性があります。
注意: JARファイルの関連付けが、zipファイルを処理するソフトウェアなどの、インストールしたソフトウェアによって切り替えられる場合があります。 JARファイル・タイプをjava起動プログラムに関連付ける方法は、使用しているオペレーティング・システムによって異なります。 いずれかのバージョンのJREがシステムにインストールされていることを確認します。バージョン1.4.2以降を使用するようにしてください。Javaがインストールされていない場合は、Javaアプリケーションを起動できません。(JDKをインストールすると、JREも取得されます。ただし、プログラマ以外にプログラムを配布する場合は、そのユーザーが必ずしもJREやJDKを持っているとは限りません。)
システム上にJavaが存在しない場合は、Java SEダウンロード・サイトからJREを取得できます。 システムにJavaがインストールされているが、ファイルの関連付けが機能していない場合は、Microsoft WindowsでJARファイルの関連付けを追加するための手順に進みます。
注意: システム上でJARファイルがJava Platform SEバイナリに関連付けられているが、依然としてJARファイルをダブルクリックしても実行されない場合は、ファイルの関連付けで-jarオプションの指定が必要である可能性があります。 Microsoft Windows XPで、ファイルの関連付けで-jarオプションを指定するには:
注意: Windows Vista以降の詳細なファイルの関連付けは、RegEditを使用して設定できます。詳細は、「ファイルの種類」ダイアログで何が発生したかの記事を参照してください。 UNIXおよびLinuxシステムの場合、ファイルの関連付けを変更するための手順は、使用しているデスクトップ環境(GNOMEやKDEなど)によって異なります。デスクトップ環境のプリファレンス設定を確認するか、またはデスクトップ環境のドキュメントを参照してください。 PATH環境変数の設定システム上のJDKまたはJREの場所を指し示さないとシステム上でJavaクラスまたはJARファイルを実行できない場合は、システムのPATH変数の値の変更が必要である可能性があります。Microsoft Windowsシステム上で実行している場合、PATH変数を設定するための手順は、使用しているWindowsのバージョンによって異なります。 次の手順は、Windows XPシステム上でPATH変数を設定する場合を示しています。
UNIXまたはLinuxシステム上で実行している場合、PATH変数を変更するための手順は、使用しているシェル・プログラムによって異なります。詳細は、使用しているシェルのドキュメントを参照してください。 次の手順NetBeans IDEの使用方法については、NetBeansのWebサイトのサポートおよびドキュメント・ページを参照してください。 Javaアプリケーションを開発するためのIDEのワークフロー(クラスパス管理を含む)の詳細は、一般的なJavaアプリケーションの開発を参照してください。 |
Documentation |