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.

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