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

    All Methods Instance Methods Concrete Methods
    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 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 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.