简体   繁体   中英

Ant JavaDoc task throwing `NoClassDefFoundError` from within a custom taglet, even though the class *is* on the classpath

I am having trouble with a JavaDoc Ant task. It's giving me a java.lang.NoClassDefFoundError for a class that, as far as I can tell, is definitely on the classpath. According to the documentation , a NoClassDefFoundError is thrown when the class existed during compilation, but can't be found during runtime. (A NoClassDefFoundError is not a ClassNotFoundException .)

When I remove the classpath item, it fails as expected (lots of package/symbol not found errors) and it still gives the same NoClassDefFoundError . Why does this fail for the taglet whether the class is on the classpath or not?


The specifics:

The class it can't find is called com.github.xbn.io.SimpleDebugable , and it's in this jar file:

  • Jar file: C:\\data_jeffy\\programming\\sandbox\\z__for_git_commit_only\\codelet\\z_build\\jar_dependencies\\xbnjava-0.1.4.2-all.jar

截图

The JavaDoc Ant task. The above jar file is the very first item in the classpath.

<target name="doca" description="Generates javadoc documentation.">
   <property name="jar_base_dir" value="C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\z_build\jar_dependencies\"/>
   <property name="taglet_jar" value="C:\data_jeffy\programming\build\codelet-0.1.4.1\download\codelet-0.1.4.1-all.jar"/>

   <javadoc
      packagenames="com.github.aliteralmind.codelet,com.github.aliteralmind.codelet.alter,com.github.aliteralmind.codelet.simplesig,com.github.aliteralmind.codelet.taglet,com.github.aliteralmind.codelet.type,com.github.aliteralmind.codelet.util"
      defaultexcludes="yes"
      destdir="C:\data_jeffy\programming\build\codelet-0.1.4.1\documentation\javadoc"
      splitindex="true"
      additionalparam="-J-Dcodelet_config_dir=C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\codelet_config\"
      classpath="${jar_base_dir}xbnjava-0.1.4.2-all.jar;
      C:\data_jeffy\programming\build\codelet-0.1.4.1\download\codelet-0.1.4.1-all.jar;
      ${jar_base_dir}templatefeather-0.1.1.2-all.jar;
      ${jar_base_dir}commons-io-2.4.jar;
      ${jar_base_dir}guava-16.0.1.jar;
      ${jar_base_dir}jdk_751__tools__contains_com_sun.jar"
   >
      <sourcepath>
          <pathelement path="C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src"/>
      </sourcepath>
      <!-- Custom taglets-->
         <taglet name="com.github.aliteralmind.codelet.taglet.CodeletTaglet"
            path="${taglet_jar}"/>
         <taglet name="com.github.aliteralmind.codelet.taglet.CodeletDotOutTaglet"
            path="${taglet_jar}"/>
         <taglet name="com.github.aliteralmind.codelet.taglet.CodeletAndOutTaglet"
            path="${taglet_jar}"/>
         <taglet name="com.github.aliteralmind.codelet.taglet.FileTextletTaglet"
            path="${taglet_jar}"/>
   </javadoc>
</target>

It results in this:

[javadoc] javadoc: error - In doclet class com.sun.tools.doclets.standard.Standard,
method start has thrown an exception java.lang.reflect.InvocationTargetException
[javadoc] java.lang.NoClassDefFoundError: com/github/xbn/io/SimpleDebuggable

Full output:

[C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet]ant docx
Buildfile: C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\build.xml

docx:
  [javadoc] Generating Javadoc
  [javadoc] Javadoc execution
  [javadoc] Loading source files for package com.github.aliteralmind.codelet...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.alter...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.simplesig...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.taglet...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.type...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.util...
  [javadoc] Constructing Javadoc information...
  [javadoc] 1 error
  [javadoc] javadoc: error - In doclet class com.sun.tools.doclets.standard.Standard, method start has thrown an exception java.lang.reflect.InvocationTargetException
  [javadoc] java.lang.NoClassDefFoundError: com/github/xbn/io/SimpleDebuggable
  [javadoc]     at java.lang.ClassLoader.defineClass1(Native Method)
  [javadoc]     at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
  [javadoc]     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
  [javadoc]     at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
  [javadoc]     at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
  [javadoc]     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
  [javadoc]     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  [javadoc]     at java.security.AccessController.doPrivileged(Native Method)
  [javadoc]     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  [javadoc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
  [javadoc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
  [javadoc]     at com.github.aliteralmind.codelet.CodeletBootstrap.wasLoaded(Unknown Source)
  [javadoc]     at com.github.aliteralmind.codelet.CodeletBootstrap.loadConfiguration(Unknown Source)
  [javadoc]     at com.github.aliteralmind.codelet.CodeletBootstrap.<clinit>(Unknown Source)
  [javadoc]     at com.github.aliteralmind.codelet.taglet.CodeletTaglet.<clinit>(Unknown Source)
  [javadoc]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  [javadoc]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  [javadoc]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  [javadoc]     at java.lang.reflect.Method.invoke(Method.java:606)
  [javadoc]     at com.sun.tools.doclets.internal.toolkit.taglets.TagletManager.addCustomTag(TagletManager.java:219)
  [javadoc]     at com.sun.tools.doclets.internal.toolkit.Configuration.initTagletManager(Configuration.java:466)
  [javadoc]     at com.sun.tools.doclets.internal.toolkit.Configuration.setOptions(Configuration.java:437)
  [javadoc]     at com.sun.tools.doclets.internal.toolkit.Configuration.setOptions(Configuration.java:447)
  [javadoc]     at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:120)
  [javadoc]     at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:83)
  [javadoc]     at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:63)
  [javadoc]     at com.sun.tools.doclets.standard.Standard.start(Standard.java:39)
  [javadoc]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  [javadoc]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  [javadoc]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  [javadoc]     at java.lang.reflect.Method.invoke(Method.java:606)
  [javadoc]     at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:280)
  [javadoc]     at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:160)
  [javadoc]     at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:397)
  [javadoc]     at com.sun.tools.javadoc.Start.begin(Start.java:167)
  [javadoc]     at com.sun.tools.javadoc.Main.execute(Main.java:59)
  [javadoc]     at com.sun.tools.javadoc.Main.main(Main.java:49)
  [javadoc] Caused by: java.lang.ClassNotFoundException: com.github.xbn.io.SimpleDebuggable
  [javadoc]     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
  [javadoc]     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  [javadoc]     at java.security.AccessController.doPrivileged(Native Method)
  [javadoc]     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  [javadoc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
  [javadoc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
  [javadoc]     ... 37 more

BUILD SUCCESSFUL
Total time: 1 second

When you completely remove the jar file from the classpath, it fails as expected, with a few hundred package com.github.xbn.... does not exist and symbol not found errors, meaning the classpath element is clearly "working". So why isn't it working for the taglet?

The output with the jar not on the classpath:

[C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet]ant docx
Buildfile: C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\build.xml

docx:
  [javadoc] Generating Javadoc
  [javadoc] Javadoc execution
  [javadoc] Loading source files for package com.github.aliteralmind.codelet...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.alter...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.simplesig...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.taglet...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.type...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.util...
  [javadoc] Constructing Javadoc information...
  [javadoc] C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src\com\github\aliteralmind\codelet\BasicCustomizers.java:18: error: package com.github.xbn.linefilter.alter does not exist

  [javadoc]     import  com.github.xbn.linefilter.alter.TextLineAlterer;
  [javadoc]                                            ^
  [javadoc] C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src\com\github\aliteralmind\codelet\BasicCustomizers.java:19: error: package com.github.xbn.linefilter does not exist
  [javadoc]     import  com.github.xbn.linefilter.FilteredLineIterator;
  [javadoc]                                      ^
  [javadoc] C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src\com\github\aliteralmind\codelet\BasicCustomizers.java:20: error: package com.github.xbn.analyze.alter does not exist
  [javadoc]     import  com.github.xbn.analyze.alter.ExpirableElements;
  [javadoc]                                         ^
  [javadoc] C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src\com\github\aliteralmind\codelet\BasicCustomizers.java:21: error: package com.github.xbn.analyze.alter does not exist
  [javadoc]     import  com.github.xbn.analyze.alter.MultiAlterType;
  [javadoc]                                         ^
  [javadoc] C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src\com\github\aliteralmind\codelet\BasicCustomizers.java:22: error: package com.github.xbn.array does not exist
  [javadoc]     import  com.github.xbn.array.NullElement;
  [javadoc]                                 ^
  [javadoc] C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src\com\github\aliteralmind\codelet\BasicCustomizers.java:23: error: package com.github.xbn.lang does not exist
  [javadoc]     import  com.github.xbn.lang.IllegalArgumentStateException;
  [javadoc]                                ^

Continued (~1,500 lines removed):

  [javadoc]     import  com.github.xbn.linefilter.FilteredLineIterator;
  [javadoc]                                      ^
  [javadoc] C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src\com\github\aliteralmind\codelet\util\zCodeletCustomizers.java:25: error: package com.github.xbn.analyze.alter does notexist
  [javadoc]     import  com.github.xbn.analyze.alter.ExpirableElements;
  [javadoc]                                         ^
  [javadoc] C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src\com\github\aliteralmind\codelet\util\zCodeletCustomizers.java:26: error: package com.github.xbn.analyze.alter does notexist
  [javadoc]     import  com.github.xbn.analyze.alter.MultiAlterType;
  [javadoc]                                         ^
  [javadoc] C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src\com\github\aliteralmind\codelet\util\zCodeletCustomizers.java:27: error: package com.github.xbn.array does not exist
  [javadoc] 1 error
  [javadoc]     import  com.github.xbn.array.NullElement;
  [javadoc] 371 warnings
  [javadoc]                                 ^

Continued: Here at the very end, it gives the same error as it did when the jar was in the classpath:

  [javadoc] javadoc: error - In doclet class com.sun.tools.doclets.standard.Standard,
  method start has thrown an exception java.lang.reflect.InvocationTargetException
  [javadoc] java.lang.NoClassDefFoundError: com/github/xbn/io/SimpleDebuggable
  [javadoc]     at java.lang.ClassLoader.defineClass1(Native Method)
  [javadoc]     at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
  [javadoc]     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
  [javadoc]     at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
  [javadoc]     at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
  [javadoc]     at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
  [javadoc]     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  [javadoc]     at java.security.AccessController.doPrivileged(Native Method)
  [javadoc]     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  [javadoc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
  [javadoc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
  [javadoc]     at com.github.aliteralmind.codelet.CodeletBootstrap.wasLoaded(Unknown Source)
  [javadoc]     at com.github.aliteralmind.codelet.CodeletBootstrap.loadConfiguration(Unknown Source)
  [javadoc]     at com.github.aliteralmind.codelet.CodeletBootstrap.<clinit>(Unknown Source)
  [javadoc]     at com.github.aliteralmind.codelet.taglet.CodeletTaglet.<clinit>(Unknown Source)
  [javadoc]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  [javadoc]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  [javadoc]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  [javadoc]     at java.lang.reflect.Method.invoke(Method.java:606)
  [javadoc]     at com.sun.tools.doclets.internal.toolkit.taglets.TagletManager.addCustomTag(TagletManager.java:219)
  [javadoc]     at com.sun.tools.doclets.internal.toolkit.Configuration.initTagletManager(Configuration.java:466)
  [javadoc]     at com.sun.tools.doclets.internal.toolkit.Configuration.setOptions(Configuration.java:437)
  [javadoc]     at com.sun.tools.doclets.internal.toolkit.Configuration.setOptions(Configuration.java:447)
  [javadoc]     at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:120)
  [javadoc]     at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:83)
  [javadoc]     at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:63)
  [javadoc]     at com.sun.tools.doclets.standard.Standard.start(Standard.java:39)
  [javadoc]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  [javadoc]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  [javadoc]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  [javadoc]     at java.lang.reflect.Method.invoke(Method.java:606)
  [javadoc]     at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:280)
  [javadoc]     at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:160)
  [javadoc]     at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:397)
  [javadoc]     at com.sun.tools.javadoc.Start.begin(Start.java:167)
  [javadoc]     at com.sun.tools.javadoc.Main.execute(Main.java:59)
  [javadoc]     at com.sun.tools.javadoc.Main.main(Main.java:49)
  [javadoc] Caused by: java.lang.ClassNotFoundException: com.github.xbn.io.SimpleDebuggable
  [javadoc]     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
  [javadoc]     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  [javadoc]     at java.security.AccessController.doPrivileged(Native Method)
  [javadoc]     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  [javadoc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
  [javadoc]     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
  [javadoc]     ... 37 more

BUILD SUCCESSFUL
Total time: 1 second

In the original (above) target, the taglet's paths are pointing to the jar file. For the below,I've extracted the taglet class files out of the jar and into a directory (only these four taglet classes are extracted, everything else remains in the jar), and changed the taglet paths to the root directory.

<property name="jar_base_dir" value="C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\z_build\jar_dependencies\"/>
<property name="taglet_base_dir" value="C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\bin\com\github\aliteralmind\codelet\taglet"/>
  <javadoc
  packagenames="com.github.aliteralmind.codelet,com.github.aliteralmind.codelet.alter,com.github.aliteralmind.codelet.simplesig,com.github.aliteralmind.codelet.taglet,com.github.aliteralmind.codelet.type,com.github.aliteralmind.codelet.util"
  defaultexcludes="yes"
  destdir="C:\data_jeffy\programming\build\codelet-0.1.4.1\documentation\javadoc"
  splitindex="true"
  additionalparam="-J-Dcodelet_config_dir=${dir_sandbox}${codelet.config.dir}${fs}"
  classpath="${jar_base_dir}xbnjava-0.1.4.2-all.jar;
  C:\data_jeffy\programming\build\codelet-0.1.4.1\download\codelet-0.1.4.1-all.jar;
  ${jar_base_dir}templatefeather-0.1.1.2-all.jar;
  ${jar_base_dir}commons-io-2.4.jar;
  ${jar_base_dir}guava-16.0.1.jar;
  ${jar_base_dir}jdk_751__tools__contains_com_sun.jar"
>
  <sourcepath>
    <pathelement path="C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src"/>
  </sourcepath>
  <!-- Custom taglets-->
    <taglet name="com.github.aliteralmind.codelet.taglet.CodeletTaglet"
      path="${taglet_base_dir}"/>
    <taglet name="com.github.aliteralmind.codelet.taglet.CodeletDotOutTaglet"
      path="${taglet_base_dir}"/>
    <taglet name="com.github.aliteralmind.codelet.taglet.CodeletAndOutTaglet"
      path="${taglet_base_dir}"/>
    <taglet name="com.github.aliteralmind.codelet.taglet.FileTextletTaglet"
      path="${taglet_base_dir}"/>
</javadoc>

And now the NoClassDefFoundError doesn't happen. Instead it's

javadoc: error - Error - Exception java.lang.ClassNotFoundException
thrown while trying to register Taglet com.github.aliteralmind.codelet.taglet.CodeletTaglet...

Now the problem is, it seems that this error is being "swallowed" by JavaDoc. I don't know how to see the trace of that java.lang.ClassNotFoundException .

Full output:

docb:
  [javadoc] Generating Javadoc
  [javadoc] Javadoc execution
  [javadoc] Loading source files for package com.github.aliteralmind.codelet...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.alter...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.simplesig...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.taglet...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.type...
  [javadoc] Loading source files for package com.github.aliteralmind.codelet.util...
  [javadoc] Constructing Javadoc information...
  [javadoc] javadoc: error - Error - Exception java.lang.ClassNotFoundException
  thrown while trying to register Taglet com.github.aliteralmind.codelet.taglet.CodeletTaglet...
  [javadoc] javadoc: error - Error - Exception java.lang.ClassNotFoundException
  thrown while trying to register Taglet com.github.aliteralmind.codelet.taglet.CodeletDotOutTaglet...
  [javadoc] javadoc: error - Error - Exception java.lang.ClassNotFoundException
  thrown while trying to register Taglet com.github.aliteralmind.codelet.taglet.CodeletAndOutTaglet...
  [javadoc] Standard Doclet version 1.7.0_72
  [javadoc] javadoc: error - Error - Exception java.lang.ClassNotFoundException thrown while trying to register Taglet com.github.aliteralmind.codelet.taglet.FileTextletTaglet...
  [javadoc] Building tree for all the packages and classes...
  [javadoc] C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src\com\github\aliteralmind\codelet\BasicCustomizers.java:90:
  warning - @.codelet is an unknown tag.

  ...lots of lines deleted...

  [javadoc] C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src\com\github\aliteralmind\codelet\util\JavaDocUtil.java:185:
  warning - @.codelet.and.out is an unknown tag.
  [javadoc] C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src\com\github\aliteralmind\codelet\util\JavaDocUtil.java:185:
  warning - @.codelet.and.out is an unknown tag.
  [javadoc] Building index for all the packages and classes...
  [javadoc] Building index for all classes...
  [javadoc] Generating C:\data_jeffy\programming\build\codelet-0.1.4.1\documentation\javadoc\help-doc.html...
  [javadoc] 4 errors
  [javadoc] 57 warnings

BUILD SUCCESSFUL
Total time: 2 seconds

And again with verbose output: http://dpaste.com/3T0B40X

The problem is the taglet path. The classpath must be redundantly passed into both the main JavaDoc task, and each of the custom taglets. The taglets must each have different ClassLoader s, and therefore require the duplicated classpath.

The ant documentation for the taglet's "path" attribute does not explicitly say that this is a classpath, and that's what confused me:

A path specifying the search path for the taglet class (eg /home/taglets). The path may also be specified by a nested element

The working target:

<target name="docc" description="Generates javadoc documentation.">

   <property name="jar_base_dir" value="C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\z_build\jar_dependencies\"/>
   <property name="taglet_base_dir" value="C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\bin\"/>
   <property name="javadoc_classpath"
      value="${jar_base_dir}xbnjava-0.1.4.2-all.jar;C:\data_jeffy\programming\build\codelet-0.1.4.1\download\codelet-0.1.4.1-all.jar;${jar_base_dir}templatefeather-0.1.1.2-all.jar;${jar_base_dir}commons-io-2.4.jar;${jar_base_dir}guava-16.0.1.jar;${jar_base_dir}jdk_751__tools__contains_com_sun.jar;${jar_base_dir}commons-lang3-3.3.2.jar"/>

   <javadoc
      packagenames="com.github.aliteralmind.codelet,com.github.aliteralmind.codelet.alter,com.github.aliteralmind.codelet.simplesig,com.github.aliteralmind.codelet.taglet,com.github.aliteralmind.codelet.type,com.github.aliteralmind.codelet.util"
      defaultexcludes="yes"
      destdir="C:\data_jeffy\programming\build\codelet-0.1.4.1\documentation\javadoc"
      splitindex="true"
      additionalparam="-J-Dcodelet_config_dir=${dir_sandbox}${codelet.config.dir}${fs}"
      classpath="${javadoc_classpath}"
   >
      <sourcepath>
         <pathelement path="C:\data_jeffy\programming\sandbox\z__for_git_commit_only\codelet\src"/>
      </sourcepath>
      <!-- Custom taglets-->
         <taglet name="com.github.aliteralmind.codelet.taglet.CodeletTaglet"
            path="${javadoc_classpath}"/>
         <taglet name="com.github.aliteralmind.codelet.taglet.CodeletDotOutTaglet"
            path="${javadoc_classpath}"/>
         <taglet name="com.github.aliteralmind.codelet.taglet.CodeletAndOutTaglet"
            path="${javadoc_classpath}"/>
         <taglet name="com.github.aliteralmind.codelet.taglet.FileTextletTaglet"
            path="${javadoc_classpath}"/>
   </javadoc>
</target>

An more-portable alternative:

<target name="docd" description="Generates javadoc documentation.">
   <property name="sandbox_grandparent" value="C:/data_jeffy/programming/"/>
   <property name="sandbox_parent" value="${sandbox_grandparent}sandbox/z__for_git_commit_only/"/>
   <property name="sandbox" value="${sandbox_parent}codelet/"/>

   <path id="project_classpath2">
      <pathelement location="${sandbox_parent}codelet/bin/"/>
      <pathelement location="${sandbox_grandparent}/build/codelet-0.1.4.1/download/codelet-0.1.4.1-all.jar"/>
      <fileset dir="${sandbox}z_build/jar_dependencies/" includes="*.jar"/>
   </path>
   <pathconvert pathsep=";" property="javadoc_classpath" refid="project_classpath2"/>

   <javadoc
      packagenames="com.github.aliteralmind.codelet.*"
      defaultexcludes="yes"
      destdir="${sandbox_grandparent}/build/codelet-0.1.4.1/documentation/javadoc"
      splitindex="true"
      additionalparam="-J-Dcodelet_config_dir=${dir_sandbox}${codelet.config.dir}${fs}"
      classpathref="project_classpath2"
   >
      <sourcepath>
         <pathelement path="${sandbox}src"/>
      </sourcepath>
      <!-- Custom taglets-->
         <taglet name="com.github.aliteralmind.codelet.taglet.CodeletTaglet"
            path="${javadoc_classpath}"/>
         <taglet name="com.github.aliteralmind.codelet.taglet.CodeletDotOutTaglet"
            path="${javadoc_classpath}"/>
         <taglet name="com.github.aliteralmind.codelet.taglet.CodeletAndOutTaglet"
            path="${javadoc_classpath}"/>
         <taglet name="com.github.aliteralmind.codelet.taglet.FileTextletTaglet"
            path="${javadoc_classpath}"/>
   </javadoc>
</target>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM