[Android Tips] Eclipseからjavadocを正常に出力させるためのパラメータ 【小ネタ】

2013.10.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

javadoc

EclipseでJavadocを出力する際にすんなりと行かなかったので、記録しておきます。

環境
OS : Windows 7 Professional 64bit
JDK : jdk 1.7.0_05
Eclipse : Eclipse 4.2 JUNO

Javadocを出力する手順は簡単で、File > Export > Javadoc を選んであとはナビゲーションに従うだけなのですが。何も考えずにやると

D:\dev\git\Sample\jp\classmethod\android\sample\Sample.java:7: この文字は、エンコーディング MS932 にマップできません。
	/** 蜃ヲ逅?オ先棡 */
....
エラー 100 個

怒られます。
これはプロジェクトの設定をUTF-8デフォルトに設定しているので、文字エンコーディングでエラーが起きているようです。UTF-8を指定して再度実行します

文字エンコーディングの指定

Extra Javadoc options (path names with white spaces must be enclosed in quotes):
上記の箇所に以下の引数を入力します

-encoding "utf-8" -charset "utf-8"

再度実行してみます

パッケージ org.json は存在しません。
import org.json.JSONException;

....

全パッケージとクラスの階層ツリーを作成しています...
java.lang.NullPointerException
	at com.sun.tools.javadoc.TypeMaker.getType(TypeMaker.java:67)
	at com.sun.tools.javadoc.TypeMaker.getType(TypeMaker.java:29)
	at com.sun.tools.javadoc.ClassDocImpl.superclassType(ClassDocImpl.java:439)
	at com.sun.tools.doclets.internal.toolkit.util.Util.getAllInterfaces(Util.java:386)
	at com.sun.tools.doclets.internal.toolkit.util.Util.getAllInterfaces(Util.java:424)
	at com.sun.tools.doclets.internal.toolkit.util.ClassTree.processType(ClassTree.java:162)
	at com.sun.tools.doclets.internal.toolkit.util.ClassTree.processType(ClassTree.java:155)
	at com.sun.tools.doclets.internal.toolkit.util.ClassTree.buildTree(ClassTree.java:114)
	at com.sun.tools.doclets.internal.toolkit.util.ClassTree.<init>(ClassTree.java:73)
	at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:104)
	at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:64)
	at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:42)
	at com.sun.tools.doclets.standard.Standard.start(Standard.java:23)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:269)
	at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:143)
	at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:340)
	at com.sun.tools.javadoc.Start.begin(Start.java:128)
	at com.sun.tools.javadoc.Main.execute(Main.java:41)
	at com.sun.tools.javadoc.Main.main(Main.java:31)
警告 100 個

また怒られました。どうやらandroid.jarの中身が見えていないようです。クラスパスの設定を行ってあげる必要があります

クラスパスにandroid.jarを通す

Javaのクラスパスの設定はいつも頭が痛いのですが、クラスパスにandroid.jarを読み込ませる設定を行います

Extra Javadoc options (path names with white spaces must be enclosed in quotes):
上記の箇所に以下の引数を入力します。先ほど設定したエンコードの設定と共に記述します

-encoding "utf-8" -charset "utf-8" -bootclasspath D:\dev\android-sdk-windows-2\platforms\android-18\android.jar

当然クラスパスの設定は、各々の環境に合わせて書き換えてください
Generate Javadoc_2013-10-07_16-35-31

この設定を適用すれば正常に出力されます
(一部、R.javaに「警告 - @attr は未知のタグです。」という警告がでますが)

参照