目次

XDoclet Parsing Error

現象

(TemplateEngine.invokeMethod         547 ) Invoking method failed: xdoclet.tagshandler.ClassTagsHandler.forAllClasses, line=36 of template file: jar:file:/D:/nbproject/Eric/resource/lib/xdoclet-1.2.3/xdoclet-web-module-1.2.3.jar!/xdoclet/modules/web/resources/web_xml.xdt
 
java.lang.reflect.InvocationTargetException
 
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
以下 政略

環境

Ant 1.6.5
Netbeans 5.0
JDK 1.4
xDoclet 1.2.3

build.xml

次はclasspathの設定部分です。

   <target name="-post-init">
        <path id="xdoclet.class.path">
    			<fileset dir="${lib.xdoclet.dir}" includes="**/*.jar"></fileset>
    			<fileset dir="${web.dir}/lib" includes="**/*.jar"></fileset>
    			<fileset dir="${env.TOMCAT_HOME}/common/lib">
    				<include name="servlet-api.jar"/>
    		</fileset>
       	</path>
    </target>

次はweb.xml, struts-config.xmlファイルを出力するタスクの部分です

<target name="strutsgenerateDD" depends="-post-init">
        <delete>
		<fileset dir="${web.dir}">
	 		<include name="struts-config-person.xml"/>
                        <include name="web.xml"/>
		</fileset>
	</delete>
    <taskdef name="webdoclet"   classname="xdoclet.modules.web.WebDocletTask" classpathref="xdoclet.class.path" />
 
  <webdoclet destDir="${web.dir}" 
                    mergeDir="${merge.dir}"  verbose="true"
                    excludedTags="@author,@see,@since, @version,@todo,@param,@return,@exception,@Test,@Before,@Override">
         <fileset dir="${src.dir}">
    		<include name="**/person/**/*.java"/>
    	 </fileset>
	 <deploymentdescriptor servletspec="2.3" 
    	          destdir="${web.dir}" mergeDir="${merge.dir}"
    	 	  sessiontimeout="30">
 
    	 </deploymentdescriptor>	 
	 <strutsconfigxml 
		version="1.2"
		destdir="${web.dir}"
                mergedir="${merge.dir}/person"
    	        destinationFile="struts-config-person.xml"
/>
  </webdoclet>
</target>

原因及び解決方法 

ライブラリーの中のxjavadoc-1.5-snapshot050611.jarファイルが原因。
もともと、xDoclet1.2.3release版にはxjavadoc-1.1.jarが含まれているが、xDocletパーサーが特殊文字をparsingする際、起こるバグを解決するためにそのjarファイルだけ入れ替えたのが禍根。
再び、元の状態で戻せば解決されるが特殊文字の対応はどうするかと言うのはまたの機会で:-/

fileset pattern

reference