我正试图将Doclava与ant一起用于Android项目,但在网上找不到任何好的说明。
我有以下代码:
<javadoc destdir="${local.svn.dir}/@{projectname}/${doc.dir}/"
sourcepath="${local.svn.dir}/@{projectname}"
docletpath="/home/martyn/build/jars/doclava-1.0.2.jar"
bootclasspath="${java.home}/lib/rt.jar">
<doclet name="com.google.doclava.Doclava">
<param name="-hdf"/> <param name="project.name"/> <param name="Doclava"/>
</doclet>
</javadoc>
但这给了我一个错误:
[javadoc] javadoc: error - In doclet
class com.google.doclava.Doclava,
method start has thrown an exception
java.lang.reflect.InvocationTargetException
[javadoc]
java.lang.NullPointerException
[javadoc] at com.google.doclava.Hierarchy.recurse(Hierarchy.java:102)
[javadoc] at com.google.doclava.Hierarchy.makeHierarchy(Hierarchy.java:61)
[javadoc] at com.google.doclava.Doclava.writeHierarchy(Doclava.java:1000)
[javadoc] at com.google.doclava.Doclava.start(Doclava.java:346)
[javadoc] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[javadoc] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[javadoc] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[javadoc] at java.lang.reflect.Method.invoke(Method.java:597)
[javadoc] at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:269)
[javadoc] at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:143)
[javadoc] at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:340)
[javadoc] at com.sun.tools.javadoc.Start.begin(Start.java:128)
[javadoc] at com.sun.tools.javadoc.Main.execute(Main.java:41)
[javadoc] at com.sun.tools.javadoc.Main.main(Main.java:31)
有人知道我该怎么解决吗?
编辑:
我在doclava 1.0.2和1.0.3 中遇到了这个问题
java.home=/usr/lib/jvm/java-6-sun-1.6.0.24/jre
我也遇到过类似的问题。虽然doclava wiki强调检查JAVA_HOME环境变量是否设置正确,但我在bootclasspath中添加了没有环境变量的路径,例如:
bootclasspath="/usr/lib/jvm/java-6-sun-1.6.0.24/jre/lib/rt.jar"
这解决了我的问题(我知道这不是一个优雅的解决方案,而是一个快速的解决方案)。您可能会检查您的环境变量是否在build.xml文件中工作?