今天用ant生成javadoc时,出了两个小问题。
以下是最后完成版的build.xml。红色字体部分是与这两个问题相关的:




   
   
   

   
   
       
       
       
       
       
            path="D:/Program Files/eclipse/plugins/org.junit_4.8.2.v4_8_2_v20110321-1705/junit.jar" />
       
            path="D:/Program Files/eclipse/plugins/org.hamcrest.core_1.1.0.v20090501071000.jar" />
   



   
   
       
       
   


   
   
   
                    use="yes" linksource="true" splitindex="yes" encoding="UTF-8"
            docencoding="GBK">
           
           
           

       

   



先看 这个地方。如果不把这三个jar包引入classpath中,将出现这个问题:

[javadoc] java.lang.ClassCastException: com.sun.tools.javadoc.ClassDocImpl cannot be cast to com.sun.javadoc.AnnotationTypeDoc


上网查过之后发现,这个问题的原因是工程中引用了第三方jar包,而ant所用的classpath中没有相关定义。参见http://stackoverflow.com/questions/44853/why-am-i-getting-a-classcastexception-when-generating-javadocs
解决方法一目了然,把用到的第三方jar包引进来就行了。
关于这个问题,也有说法是把jdk下的lib/tools.jar引入ant的classpath中。我试了,没能解决这个问题。

再看 和后面的编码格式定义。我的工程用的是UTF-8编码,但是如果我把编码、解码格式都定义为UTF-8,还是会出现乱码。我不知道原因。现有的这个配置是我枚举了编码、解码和GBK、UTF-8的可能组合之后找到的可行方案。用这个配置创建的javadoc文档没有再出现乱码。