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.