Eclipseのプラグイン開発の更新サイト作成時のエラーについて。
更新サイトプロジェクトのsite.xmlでビルドを実行するとartifacts.jar・content.jarファイルとfeatures・pluginsディレクトリーが作られるが、
logs.zipというファイルが作られることがある。
logs.zipは何らかのエラー(コンパイルエラー)があったときに作られ、中にはログファイルが入っている。
さらに厄介なことに、コンパイルエラーの状態でもプラグインのjarファイルは生成される。
しかしコンパイルエラーがあるクラスは、各メソッドが「throw new Error("コンパイルエラーの内容");
」というコードで置き換えられる。
したがって、プラグインをインストールして実際に呼ばれる段階でエラーが発生することになる。
WindowsにインストールしたEclipse(3.7 indigo、4.2 juno、4.3 kepler)(デフォルトのエンコーディングはMS932)において、
ワークスペース(およびプラグインプロジェクト)内のファイルのエンコーディングをUTF-8にしているとき、
javaソースファイル内のコメントやStringリテラル内の日本語が文字化けし、
更新サイトのビルド時にコンパイルエラーになることがある。
例として、「カンマ」という文字列が入っていると、このエラーが発生する。
(Eclipseのメインメニューの「Window」→「Preferences」で設定ダイアログを開き、ツリーから「General」→「Workspace」を選んで「Text
file encoding」をUTF-8にしておく)
public class Activator extends AbstractUIPlugin {
public static final String COMMA = "カンマ";
〜
}
Javaとしては特に問題の無いコードで、Eclipseのエディター上では特に問題は無い。
が、この状態でビルドすると、更新サイトプロジェクト/logs.zipが作られ、その中に「@dot.log」というファイルが出来ている。
# 13/08/29 21:13:30 JST # Eclipse Compiler for Java(TM) v20130604-1421, 3.9.0, Copyright IBM Corp 2000, 2013. All rights reserved. ---------- 1. ERROR in D:\workspace\ex1plugin\src\ex1plugin\Activator.java (at line 11) public static final String COMMA = "カン?; ^^^^^^^^ String literal is not properly closed by a double-quote ---------- 1 problem (1 error)
「マ」の字が文字化けして直後のダブルクォーテーションを巻き込み、ダブルクォーテーションが無かったことになって
文字列が閉じていないのでコンパイルエラーになっている。
同様に「//カンマ」というコメントだと、「マ」の直後の改行コードを巻き込むので、次の行のソースがコメントアウト状態になってしまう!
たぶん、ビルド時にJavaのコンパイルを行っているのだが、エンコーディングがMS932(Windowsのデフォルト)のままなんじゃないかと思う。
ソースファイルのエンコーディングをMS932にするか、プラグインプロジェクトのbuild.propertiesにエンコードを指定する。[2013-08-30]
source.. = src/ output.. = classes/ bin.includes = plugin.xml,\ META-INF/,\ .,\ icons/ javacSource.. = 1.6 javacTarget.. = 1.6 javacDefaultEncoding.. = UTF-8