Eclipse 上で UTF-8 のソースから javadoc を生成する方法

UTF-8 のソースからの javadoc 生成でおこられる

Eclipse から javadoc を起動する際、ソースファイルをシステムのデフォルトエンコーディングで読み込もうとします。おいらの環境ではシステムのデフォルトエンコーディングが MS932 なのですが、ワークスペースのデフォルトエンコーディングUTF-8 にしているため、javadoc 生成時におこられてしまいます。

javadocのオプション

javadoc には、エンコーディングに関して以下のようなオプションがあります。

オプション 効果
-encoding ソースファイルのエンコーディングの名前 (EUCJIS/SJIS など) を指定します。このオプションが指定されていない場合は、プラットフォームのデフォルトコンバータが使われます。
-docencoding 生成される HTML ファイルのエンコーディングを指定します。この名前は、IANA Registry で与えられた、推奨される MIME 名でなければなりません。このオプションを省略しながら -encoding を使用した場合、生成される HTML ファイルのエンコードは、-encoding によって決められます。
-charset このドキュメント用の HTML 文字セットを指定します。この名前は、IANA Registry で与えられた、推奨される MIME 名でなければなりません。

Eclipse 上での指定方法は?

Eclipseでの正しい指定方法ですが、、、わかりません o...rz(知ってる人、教えてください)id:waman さんに教えてもらいました。m(_ _)m

[project] -> [Generate javadoc...] -> [Next] -> [Next] 

をたどり、[Extra javadoc options] で設定できます。

以下、オプション例。

-encoding "utf-8" -charset "utf-8" -link http://java.sun.com/javase/ja/6/docs/ja/api -link http://www.hibernate.org/hib_docs/v3/api

-link オプションは、外部のjavadocへのリンクを行うためのものです。


ということで、バッチファイル経由で javadoc コマンドを起動するというワークアラウンドをしてみました。

バッチファイルは、以下のようになります。

ファイル名は、javadoc_utf8.bat などの分かりやすいものにしておくとよいでしょう。

javadoc -encoding "utf-8" -charset "utf-8" %1 -link http://java.sun.com/javase/ja/6/docs/ja/api

-link オプションは、外部のjavadocへのリンクを行うためのものです。

設定は、[Project] -> [Generate Javadoc...] の [javadoc command] に、先ほどのバッチファイルを指定してあげれば OK です。

注意点

ソースファイルのエンコーディングを指定するための -encoding オプションを指定すれば、-docencoding オプションが未指定の場合は出力エンコーディングも同一のものが適用されます。しかし、-charset オプションは明示的に指定しなければいけないので注意が必要です。

相対パスの使用

おいらは jdkeclipse 関連フォルダを丸ごとコピーして使いまわしたりするのですが、そのときに絶対パスというのがかなり厄介です。しかし、javadoc の実行コマンドファイルのロケーション指定は GUI で制御されているため、相対パスを入力することができません。そのため、以下のファイルの情報を直接書き換えることにより、相対パス指定を実現します。

eclipse を一度終了してから、以下の方法で設定ファイルを直接更新します。

相対パスのベースフォルダ

相対パスのベースフォルダは、eclipse フォルダになります。

ダイアログ設定の上書き

設定ファイル

<ワークスペースフォルダ>\.metadata\.plugins\org.eclipse.jdt.ui\dialog_settings.xml

変更例

<item value="..\jdk\bin\javadoc_utf8.bat" key="javadoc_command_history"/>
プリファレンス設定ファイルの変更

設定ファイル

<ワークスペースフォルダ>\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.jdt.ui.prefs

変更例

command=..\\jdk\\bin\\javadoc_utf8.bat
設定後

Eclipse を再び立ち上げれば、相対パス指定が有効になっているはずです。ベースパスの勘違いやタイプミス等により指定されたファイルが存在しない場合は、javadoc生成ボタンが押せないようになりますので、再確認しましょう。