## 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:
  java.lang.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
`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
`Javah()` No arg constructor.

Method Summary
`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.
`java.lang.String[]` `getClasses()` Names of the classes to process.
`Path` `getClasspath()` The classpath to use.
`java.lang.String[]` `getCurrentArgs()` Returns the (implementation specific) settings given as nested arg elements.
`java.io.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.
`java.io.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(java.lang.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(java.io.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(java.lang.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(java.io.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 Detail

### Javah

    public Javah()

  No arg constructor.

Method Detail

### setClass

    public void setClass(java.lang.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 java.lang.String[] getClasses()

  Names of the classes to process.

  Returns:
    the array of classes.
  Since:
    Ant 1.6.3

### setDestdir

    public void setDestdir(java.io.File destDir)

  Set the destination directory into which the Java source files should be compiled.

  Parameters:
    `destDir` - the destination directory.

### getDestdir

    public java.io.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(java.io.File outputFile)

  Concatenates the resulting header or source files for all the classes listed into this file.

  Parameters:
    `outputFile` - the output file.

### getOutputfile

    public java.io.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(java.lang.String impl)

  Choose the implementation for this particular task.

  Parameters:
    `impl` - the name of the implemenation.
  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 java.lang.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.

  Since:
    Ant 1.8.0

### add

    public void add(JavahAdapter adapter)

  Set the adapter explicitly.

  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.