2018年10月16日火曜日

Eclipse のヘッドレスアプリケーションを作る

Eclipse のヘッドレスアプリケーションプラグインを作り、 コマンドラインからプラグインの処理を呼び出す。

本当は Java11 でやりたかったのだけれど、 「エクスポートした jar に class ファイルが格納されない問題」が解決できなかった。

なので、Java8 で Eclipse 4.9 を動かしている。

環境

  • OS: Windows 10 Pro
  • Java: java version "1.8.0_151"
  • Eclipse: Version: 2018-09 (4.9.0)
    • for Commiters

Eclipse の準備

Eclipse のダウンロードと展開

Enabling Open Innovation & Collaboration | The Eclipse Foundation からダウンロードする。

  1. Download -> Tool Platforms セクションの Download Packages
  2. Eclipse IDE for Eclipse CommittersWindows 64-bit
  3. Download ボタンからダウンロード
  4. ダウンロードした zip ファイルを適当な場所に展開

Eclipse を起動する Java の指定

僕の作業用 Windows は、デフォルトの Java を 11 にしている。 最初に説明したとおり、 11 だとうまくエクスポートができない。 そのため、Java 8 で Eclipse が動くように修正する。

eclipse.ini をテキストエディタで開き、 -vmargs の直前に、次の 2 行を追加する。 (\PATH\TO\JDK1.8.0\bin\javaw.exe は自分の環境に合わせて書き換える)

-vm
\PATH\TO\JDK1.8.0\bin\javaw.exe

プラグイン作成

eclipse を起動し、プラグインを開発していく。

プラグインプロジェクトの作成

  1. Plug-in Development パースペクティブを開く
  2. File -> New -> Plug-in Project
  3. 基本情報設定 -> Next
    • Project name: HeadlessApplication
  4. コンテント情報入力 -> Next
    • Options のチェックを全部外す
    • Rich Client Application 内のラジオボタンで Yes を選択
  5. テンプレートの選択 -> Finish
    • Headless Hello RCP を選択

この状態で、「呼び出すと Hello RCP World! と標準出力されるヘッドレスアプリケーション」が生成される。

プラグインのエクスポート

  1. プロジェクト右クリック -> Export
  2. Deployable plug-ins and fragments を選択して Next
  3. エクスポート設定 -> Finish
    • HeadlessApplication にチェックを入れる
    • Destination タブの Directory に、出力先ディレクトリを入力

Directory に指定したディレクトリ内に、 plugins ディレクトリが作成され、 その中にプラグインの jar ファイルが格納される。

動作確認

プラグインのインストール

「プラグインのエクスポート」で作成された jar ファイルを、 eclipse の dropins ディレクトリにコピーする。それだけ。 (本当はいろいろ作法があるらしい?未調査。)

動作確認

標準出力を確認したいので、 java.exe を使って実行する。

eclipsec.exe -nosplash -application HeadlessApplication.application -vm \PATH\TO\JDK1.8.0\bin\java.exe

下記出力が得られれば成功。

org.eclipse.m2e.logback.configuration: The org.eclipse.m2e.logback.configuration bundle was activated before the state location was initialized.  Will retry after the state location is initialized.
Hello RCP World!

あとはこれにお好きな処理を追加していくだけ。

環境に応じた Preference の値を流し込むとか、 Eclipse 操作のオートメーションとかできるといいなぁ...。

以上。

参考資料

0 件のコメント:

コメントを投稿