2014年7月26日土曜日

[Java] Eclipseプラグイン開発のトラブルシューティング

Troubleshooting developing the Eclipse plugins
統合開発環境・Eclipseはプラグインにより機能を拡張することが出来ます。
Java言語を使ってプラグインを自分で開発することもできます。
公開できるようなプラグインは作ってませんが開発しようとしたらトラブルが多く発生したので、それぞれの対策方法をまとめてみました。
他の方法で解決できるトラブルやここに載ってないトラブルも多々あると思いますのでご了承ください。


開発環境

次の環境で開発しました。
・Windonws8 64bit
・Eclipse Juno SR1 + 日本語化プラグイン


必要なプラグイン

Eclipseプラグインを開発するには、Eclipseに次の二つのプラグインをインストールします。
一般ツール - Eclipseプラグイン開発環境
Eclipse SDK


プラグイン開発のリファレンスはどこにある?

まず最初に目を通すべきリファレンスはEclipseの
ヘルプ - ヘルプ目次
を開き、
プラットフォーム・プラグイン開発者ガイド(Platform Plug-in Developer Guide)にあります。
ただし、日本語化プラグインをインストールしても日本語化されない部分が多いです。


マニフェストの拡張で、新規の下に汎用(Generic)しか表示されない

Eclipse SDKのプラグインをインストールすれば直ります。


アクセス制限、必須ライブラリーは制限されているためアクセスできません

アクセス・ルールの追加設定が必要です。
上の画像だと
アクセス制限: 型
TextViewer のメソッド getTextWidget() は必須ライブラリー D:\eclipse-jee-galileo-SR1-win32\eclipse\plugins\org.eclipse.jface.text_3.5.2.r352_v20091118-0800.jar で制限されているためアクセスできません
とあるので、プロジェクトのプロパティーを開き
Javaのビルド・パス - ライブラリータブ - プラグイン依存関係
を編集ボタンで開き、型のアクセス・ルールにアクセス可能なルールに
org/eclipse/jface/**
を追加します。
※アクセスルールに追加するライブラリー名はドット区切りではなくスラッシュ区切りです。
@SuppressWarnings("restriction") というアノテーションでビルドエラーを回避できますが実行時にエラーが起こるかもしれません(未確認)。


実行時にClassNotFoundException

マニフェストの設定漏れです。
上の画像だと
java.lang.NoClassDefFoundError: org/eclipse/ui/forms/editor/FormEditor
とあるので、マニフェストの依存関係の必須プラグインに
org.eclipse.ui.forms
を追加します。


(クラス・インターフェイス)を解決できません。必要な.classファイルから間接的に参照されています のビルドエラー

マニフェストの設定漏れです。
上の画像だと
型 org.eclipse.ui.texteditor.ITextEditor を解決できません。必要な .class ファイルから間接的に参照されています。
とあるのでマニフェストの依存関係のインポート済パッケージに
org.eclipse.ui.texteditor
を追加します。


Eclipseが起動しなくなった

Eclipse SDKプラグインをアンインストールすると
エラーが発生しました。ロ・グファイル を参照してください。
と表示されEclipseが起動しなくなったり、スプラッシュスクリーンが表示されなくなることがありました。
Eclipseフォルダーの configuraiton\connfig.ini の が壊れたのが原因です。
Eclipseをダウンロードし直して、config.iniだけ上書きしたら直りました。
eclipse.application=
の行を
eclipse.application=org.eclipse.ui.ide.workbench
に置き換えても直りました。


関連ブログ

[Windows8][Android] EclipseをXP互換モードで起動する理由(Can't bind to local 8600 for debugger)
[Android] Unity + Eclipse のRuntimeException unable to link library を解決する
[Android] Unity + EclipseのClassNotFoundExceptionを解決する
[Android] Unity + Eclipse の unityplayerproxyactivity.jarの欠落を解決する

以上、参考になれば幸いです。

0 件のコメント:

コメントを投稿