Eclipse RCPアプリケーションをJava Web Startで配布する手順
題名の通り、Eclipse RCPアプリケーションをJava Web Startで配布する手順を記述します。Eclipse RCPとは何ぞや? という方は、以下のページを参照してください。
Eclipse RCPをJava Web Startで配布する方法は、Eclipse for RCP/Plug-in Developersパッケージのヘルプの、
Platform Plug-in Developer Guide Programmer's Guide Packaging and delivering Eclipse based products Deploying eclipse based application with Java Web Start
に載っています。このエントリーは、このヘルプを参考にしています。
ポイント
- Eclipse for RCP/Plug-in Developers(またはEclipse for Java EE Developers)を使用します。
- プラグイン(RCPアプリケーション)を作成します。
- Product Configurationを作成します。
- フューチャーを作成します。
- フューチャーにorg.eclipse.equinox.launcherプラグインを追加します。
- 電子証明書を作成します。
- フューチャーをDeployable featuresでエクスポートします。
- jnlpファイルを作成します。
- Webサーバにデプロイします。
次から具体的な手順を説明します。
Eclipseをインストール
eclipse.orgからEclipseをダウンロードして、インストール(zip展開)します。2009/11/11時点の最新バージョンは3.5(Galileo)になります。パッケージはRCP/Plug-in Developersを使用します。Java EE Developersでも問題はありませんが、RCP/Plug-in Developersの方が詳細なヘルプが載っています。
Eclipse RCPアプリケーションを作成(fooプラグインを作成)
適当にEclipse RCPアプリケーションを作成します。このプロジェクトを仮にfooプラグインとします。fooプラグインを作成する手順を次に記述します。
メニューのFile > New > Projectをクリックします。New Projectウィザードが開きます。
Plug-in Development > Plug-in Projectを選択して、Nextをクリックします。
Project nameにfooを入力して、Nextをクリックします。
Would you like to create a rich client application?でYesを選択して、Nextをクリックします。
RCP Mail Templateを選択して、Finishをクリックします。
Yesをクリックします。
fooプロジェクトが作成されます。
試しにLaunch an Eclipse applicationをクリックしてみます。
RCP Productというタイトルのウィンドウが開きます。これが、今作成したfooプラグインです。
Product Configurationを作成
このままだとただのプラグインなので、Product Configurationを作成して製品化(語弊がありますが…)します。
メニューのFile > New > Otherをクリックします。Newウィザードが起動します。
Plug-in Development > Product Configurationを選択して、Nextをクリックします。
以下のように設定して、Finishをクリックします。
Enter or select the parent folder | foo |
File name | foo.product |
Use an existing product | foo.product |
foo.productファイルが作成されます。これが、製品化のための設定ファイルです。必要な情報は全て設定済みです。Dependenciesにも必要なプラグインが設定済みになっています。
試しにLaunch an Eclipse applicationをクリックして、fooプラグインが起動することを確認します。
ちなみに、Product Configurationからプラグインをエクスポートすると、配布可能なスタンドアロン・アプリケーションが作成できます。
フューチャーを作成
関連するプラグインをまとめて配布するため、フューチャーを作成します。このフューチャーを仮にfooフューチャーとします。fooフューチャーはfooプラグインとその関連プラグインをまとめます。fooフューチャーを作成する手順を次に記述します。
メニューのFile > New > Projectをクリックします。New Projectウィザードが開きます。
Plug-in Development > Feature Projectを選択して、Nextをクリックします。
Project nameにfoo.featureを入力して、Nextをクリックします。
Initialize from a launch configurationのfoo.productを選択して、Finishをクリックします。(Initialize from a launch configurationの選択肢が表示されない場合、fooプラグインを1度起動してみてください)
foo.featureプロジェクトが作成されます。必要な情報は設定済みです。Plug-insにも必要なプラグインが設定済みになっています。
フューチャーにorg.eclipse.equinox.launcherプラグインを追加
フューチャーにorg.eclipse.equinox.launcherプラグインを追加します。Java Web Startのランチャーになるようです。
電子証明書を作成
Eclipse RCPアプリケーションをJava Web Startで配布するためには、jnlpで
電子証明書を作成するには、keytoolプログラムを使用します。keytoolプログラムについては、以下を参照してください。
具体的には、以下のように使用します。
>keytool -genkey -alias foo -keystore D:\temp\foo.keystore キーストアのパスワードを入力してください: 姓名を入力してください。 [Unknown]: 組織単位名を入力してください。 [Unknown]: 組織名を入力してください。 [Unknown]: 都市名または地域名を入力してください。 [Unknown]: 州名または地方名を入力してください。 [Unknown]: この単位に該当する 2 文字の国番号を入力してください。 [Unknown]: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown でよろしいですか? [no]: yes <foo> の鍵パスワードを入力してください。 (キーストアのパスワードと同じ場合は RETURN を押してください):
フューチャーをエクスポート
フューチャーをエクスポートします。foo.featureプロジェクトを右クリックして、Exportをクリックします。Exportウィザードが開きます。
Plug-in Development > Deployable featuresを選択して、Nextをクリックします。
次のように入力して、Finishをクリックします。
Destination | Directoryに出力先フォルダを入力します。 |
Options | Package as individual JAR archivesをチェックします。このとき、Generate metadata repository、および、Categorize repositoryはアンチェックします(アンチェックしないとjnlpが生成されません。注意)。 |
JAR Signing | Sign the JAR archives using a keystoreをチェックして、Keystore location、Keypass、Alias、Passwordを入力します。 |
Java Web Start | Create JNLP manifests for the JAR archivesをチェックして、Site URL、JRE versionを入力します。 |
エクスポートには少し時間がかかります。完了すると、出力先フォルダに以下のようなファイルが作成されます。
foo-site/ +---features/ | foo.feature_1.0.0.200911111530.jar | foo.feature_1.0.0.200911111530.jnlp +---plugins/ com.ibm.icu_4.0.1.v20090822.jar foo_1.0.0.200911111530.jar javax.servlet_2.5.0.v200806031605.jar org.eclipse.core.commands_3.5.0.I20090525-2000.jar org.eclipse.core.contenttype_3.4.1.R35x_v20090826-0451.jar org.eclipse.core.databinding.observable_1.2.0.M20090902-0800.jar org.eclipse.core.databinding.property_1.2.0.M20090819-0800.jar org.eclipse.core.databinding_1.2.0.M20090819-0800.jar org.eclipse.core.expressions_3.4.100.v20090429-1800.jar org.eclipse.core.jobs_3.4.100.v20090429-1800.jar org.eclipse.core.runtime.compatibility.auth_3.2.100.v20090413.jar org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800.jar org.eclipse.core.runtime_3.5.0.v20090525.jar org.eclipse.equinox.app_1.2.0.v20090520-1800.jar org.eclipse.equinox.common_3.5.1.R35x_v20090807-1100.jar org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar org.eclipse.equinox.preferences_3.2.300.v20090520-1800.jar org.eclipse.equinox.registry_3.4.100.v20090520-1800.jar org.eclipse.help_3.4.1.v20090805_35x.jar org.eclipse.jface.databinding_1.3.1.M20090826-0800.jar org.eclipse.jface_3.5.1.M20090826-0800.jar org.eclipse.osgi.services_3.2.0.v20090520-1800.jar org.eclipse.osgi_3.5.1.R35x_v20090827.jar org.eclipse.swt.win32.win32.x86_3.5.1.v3555a.jar org.eclipse.swt_3.5.1.v3555a.jar org.eclipse.ui.workbench_3.5.1.M20090826-0800a.jar org.eclipse.ui_3.5.1.M20090902-1000.jar
ほとんどがjarファイルですが、featuresフォルダに1つjnlpファイルが作成されています。このjnlpファイルですが、jnlp/information/vendor要素が抜けています。テキストエディタでjnlpファイルを開いて、必要な要素を追加します。
jnlpファイルを作成
エクスポートでjnlpファイルが作成されましたが、これだけではJava Web Startを起動できません。メインのjnlpファイルを作成する必要があります。内容は以下のような感じです。
<?xml version="1.0" encoding="UTF-8"?> <jnlp spec="1.0+" codebase="http://localhost:8080/foo-site/" href="foo.jnlp"> <information> <title>foo RCP Application</title> <vendor>u6k.yu1@gmail.com</vendor> </information> <security> <all-permissions /> </security> <application-desc main-class="org.eclipse.equinox.launcher.WebStartMain"> <argument>-nosplash</argument> </application-desc> <resources> <jar href="plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar" /> <extension name="foo.feature" href="features/foo.feature_1.0.0.200911111530.jnlp" /> <property name="osgi.instance.area" value="@user.home/.foo" /> <property name="osgi.configuration.area" value="@user.home/.foo" /> <property name="eclipse.product" value="foo.product" /> </resources> <resources os="Mac"> <j2se version="1.5+" java-vm-args="-XstartOnFirstThread" /> </resources> <resources os="Windows"> <j2se version="1.4+" /> </resources> <resources os="Linux"> <j2se version="1.4+" /> </resources> </jnlp>
- jarファイルやjnlpファイルのファイル名は、エクスポートした時間などで変わります。
- osgi.instance.area、osgi.configuration.areaは、ワークスペースの位置になります。
- eclipse.productは、起動するProduct Configurationになります。これを間違えると、Java Web Startのダウンロードは終わるけど何も起きないという不思議な現象に陥ってしまうので注意。
このjnlpファイルをfoo-siteフォルダに配置します。必要ならhtmlファイルも作成します。
foo-site foo.jnlp