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:
  `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

  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.
  `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 Details

  - ### Javah

    public Javah()
    No arg constructor.

- ## Method Details

  - ### 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 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 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.
    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.