Package org.apache.tools.ant.taskdefs.optional

# Class Javah

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.Task
org.apache.tools.ant.taskdefs.optional.Javah

All Implemented Interfaces:
  `Cloneable`

public class Javah extends Task
Generates JNI header files using javah. This task can take the following arguments:

- classname - the fully-qualified name of a class
- outputFile - Concatenates the resulting header or source files for all the classes listed into this file
- destdir - Sets the directory where javah saves the header files or the stub files
- classpath
- bootclasspath
- force - Specifies that output files should always be written (JDK1.2 only)
- old - Specifies that old JDK1.0-style header files should be generated (otherwise output file contain JNI-style native method function prototypes) (JDK1.2 only)
- stubs - generate C declarations from the Java object file (used with old)
- verbose - causes javah to print a message to stdout concerning the status of the generated files
- extdirs - Override location of installed extensions

Of these arguments, either outputFile or destdir is required, but not both. More than one classname may be specified, using a comma-separated list or by using `<class name="xxx">` elements within the task.

When this task executes, it will generate C header and source files that are needed to implement native methods.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `class`
  `Javah.ClassArgument`
  A class corresponding the the nested "class" element.

- ## Field Summary

  ### Fields inherited from class org.apache.tools.ant.Task

  `target, taskName, taskType, wrapper`

  ### Fields inherited from class org.apache.tools.ant.ProjectComponent

  `description, location, project`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Javah()`
  No arg constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `add(JavahAdapter adapter)`
  Set the adapter explicitly.
  `void`
  `addFileSet(FileSet fs)`
  Add a fileset.
  `ImplementationSpecificArgument`
  `createArg()`
  Adds an implementation specific command-line argument.
  `Path`
  `createBootclasspath()`
  Adds path to bootstrap class files.
  `Javah.ClassArgument`
  `createClass()`
  Adds class to process.
  `Path`
  `createClasspath()`
  Path to use for classpath.
  `Path`
  `createImplementationClasspath()`
  The classpath to use when loading the javah implementation if it is not a built-in one.
  `void`
  `execute()`
  Execute the task
  `Path`
  `getBootclasspath()`
  The bootclasspath to use.
  `String[]`
  `getClasses()`
  Names of the classes to process.
  `Path`
  `getClasspath()`
  The classpath to use.
  `String[]`
  `getCurrentArgs()`
  Returns the (implementation specific) settings given as nested arg elements.
  `File`
  `getDestdir()`
  The destination directory, if any.
  `boolean`
  `getForce()`
  Whether output files should always be written.
  `boolean`
  `getOld()`
  Whether old JDK1.0-style header files should be generated.
  `File`
  `getOutputfile()`
  The destination file, if any.
  `boolean`
  `getStubs()`
  Whether C declarations from the Java object file should be generated.
  `boolean`
  `getVerbose()`
  Whether verbose output should get generated.
  `void`
  `logAndAddFiles(Commandline cmd)`
  Logs the compilation parameters, adds the files to compile and logs the "niceSourceList"
  `protected void`
  `logAndAddFilesToCompile(Commandline cmd)`
  Logs the compilation parameters, adds the files to compile and logs the "niceSourceList"
  `void`
  `setBootclasspath(Path src)`
  location of bootstrap class files.
  `void`
  `setBootClasspathRef(Reference r)`
  To the bootstrap path, this adds a reference to a classpath defined elsewhere.
  `void`
  `setClass(String cls)`
  the fully-qualified name of the class (or classes, separated by commas).
  `void`
  `setClasspath(Path src)`
  the classpath to use.
  `void`
  `setClasspathRef(Reference r)`
  Adds a reference to a classpath defined elsewhere.
  `void`
  `setDestdir(File destDir)`
  Set the destination directory into which the Java source files should be compiled.
  `void`
  `setForce(boolean force)`
  If true, output files should always be written (JDK1.2 only).
  `void`
  `setImplementation(String impl)`
  Choose the implementation for this particular task.
  `void`
  `setOld(boolean old)`
  If true, specifies that old JDK1.0-style header files should be generated.
  `void`
  `setOutputFile(File outputFile)`
  Concatenates the resulting header or source files for all the classes listed into this file.
  `void`
  `setStubs(boolean stubs)`
  If true, generate C declarations from the Java object file (used with old).
  `void`
  `setVerbose(boolean verbose)`
  If true, causes Javah to print a message concerning the status of the generated files.

  ### Methods inherited from class org.apache.tools.ant.Task

  `bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType`

  ### Methods inherited from class org.apache.tools.ant.ProjectComponent

  `clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject`

  ### Methods inherited from class java.lang.Object

  `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### Javah

    public Javah()
    No arg constructor.

- ## Method Details

  - ### setClass

    public void setClass(String cls)
    the fully-qualified name of the class (or classes, separated by commas).
    Parameters:
      `cls` - the classname (or classnames).

  - ### createClass

    public Javah.ClassArgument createClass()
    Adds class to process.
    Returns:
      a `ClassArgument` to be configured.

  - ### addFileSet

    public void addFileSet(FileSet fs)
    Add a fileset.
    Parameters:
      `fs` - the fileset to add.

  - ### getClasses

    public String[] getClasses()
    Names of the classes to process.
    Returns:
      the array of classes.
    Since:
      Ant 1.6.3

  - ### setDestdir

    public void setDestdir(File destDir)
    Set the destination directory into which the Java source files should be compiled.
    Parameters:
      `destDir` - the destination directory.

  - ### getDestdir

    public File getDestdir()
    The destination directory, if any.
    Returns:
      the destination directory.
    Since:
      Ant 1.6.3

  - ### setClasspath

    public void setClasspath(Path src)
    the classpath to use.
    Parameters:
      `src` - the classpath.

  - ### createClasspath

    public Path createClasspath()
    Path to use for classpath.
    Returns:
      a path to be configured.

  - ### setClasspathRef

    public void setClasspathRef(Reference r)
    Adds a reference to a classpath defined elsewhere.
    Parameters:
      `r` - a reference to a classpath.
    To do:
      this needs to be documented in the HTML docs.

  - ### getClasspath

    public Path getClasspath()
    The classpath to use.
    Returns:
      the classpath.
    Since:
      Ant 1.6.3

  - ### setBootclasspath

    public void setBootclasspath(Path src)
    location of bootstrap class files.
    Parameters:
      `src` - the bootstrap classpath.

  - ### createBootclasspath

    public Path createBootclasspath()
    Adds path to bootstrap class files.
    Returns:
      a path to be configured.

  - ### setBootClasspathRef

    public void setBootClasspathRef(Reference r)
    To the bootstrap path, this adds a reference to a classpath defined elsewhere.
    Parameters:
      `r` - a reference to a classpath
    To do:
      this needs to be documented in the HTML.

  - ### getBootclasspath

    public Path getBootclasspath()
    The bootclasspath to use.
    Returns:
      the bootclass path.
    Since:
      Ant 1.6.3

  - ### setOutputFile

    public void setOutputFile(File outputFile)
    Concatenates the resulting header or source files for all the classes listed into this file.
    Parameters:
      `outputFile` - the output file.

  - ### getOutputfile

    public File getOutputfile()
    The destination file, if any.
    Returns:
      the destination file.
    Since:
      Ant 1.6.3

  - ### setForce

    public void setForce(boolean force)
    If true, output files should always be written (JDK1.2 only).
    Parameters:
      `force` - the value to use.

  - ### getForce

    public boolean getForce()
    Whether output files should always be written.
    Returns:
      the force attribute.
    Since:
      Ant 1.6.3

  - ### setOld

    public void setOld(boolean old)
    If true, specifies that old JDK1.0-style header files should be generated. (otherwise output file contain JNI-style native method function prototypes) (JDK1.2 only).
    Parameters:
      `old` - if true use old 1.0 style header files.

  - ### getOld

    public boolean getOld()
    Whether old JDK1.0-style header files should be generated.
    Returns:
      the old attribute.
    Since:
      Ant 1.6.3

  - ### setStubs

    public void setStubs(boolean stubs)
    If true, generate C declarations from the Java object file (used with old).
    Parameters:
      `stubs` - if true, generated C declarations.

  - ### getStubs

    public boolean getStubs()
    Whether C declarations from the Java object file should be generated.
    Returns:
      the stubs attribute.
    Since:
      Ant 1.6.3

  - ### setVerbose

    public void setVerbose(boolean verbose)
    If true, causes Javah to print a message concerning the status of the generated files.
    Parameters:
      `verbose` - if true, do verbose printing.

  - ### getVerbose

    public boolean getVerbose()
    Whether verbose output should get generated.
    Returns:
      the verbose attribute.
    Since:
      Ant 1.6.3

  - ### setImplementation

    public void setImplementation(String impl)
    Choose the implementation for this particular task.
    Parameters:
      `impl` - the name of the implementation.
    Since:
      Ant 1.6.3

  - ### createArg

    public ImplementationSpecificArgument createArg()
    Adds an implementation specific command-line argument.
    Returns:
      a ImplementationSpecificArgument to be configured.
    Since:
      Ant 1.6.3

  - ### getCurrentArgs

    public String[] getCurrentArgs()
    Returns the (implementation specific) settings given as nested arg elements.
    Returns:
      the arguments.
    Since:
      Ant 1.6.3

  - ### createImplementationClasspath

    public Path createImplementationClasspath()
    The classpath to use when loading the javah implementation if it is not a built-in one.
    Returns:
      Path
    Since:
      Ant 1.8.0

  - ### add

    public void add(JavahAdapter adapter)
    Set the adapter explicitly.
    Parameters:
      `adapter` - JavahAdapter
    Since:
      Ant 1.8.0

  - ### execute

    public void execute() throws BuildException
    Execute the task
    Overrides:
      `execute` in class `Task`
    Throws:
      `BuildException` - is there is a problem in the task execution.

  - ### logAndAddFiles

    public void logAndAddFiles(Commandline cmd)
    Logs the compilation parameters, adds the files to compile and logs the "niceSourceList"
    Parameters:
      `cmd` - the command line.

  - ### logAndAddFilesToCompile

    protected void logAndAddFilesToCompile(Commandline cmd)
    Logs the compilation parameters, adds the files to compile and logs the "niceSourceList"
    Parameters:
      `cmd` - the command line to add parameters to.