# javah - C Header and Stub File Generator

> javah produces C header files and C source files from a Java class. These files provide the connective glue that allow your Java and C code to interact.

## SYNOPSIS

>     javah [ options ] classname. . .
>     javah_g [ options ] classname. . .

## DESCRIPTION

> javah generates C header and source files that are needed to implement native methods. The generated header and source files are used by C programs to reference an object's instance variables from native source code. The .h file contains a struct definition whose layout parallels the layout of the corresponding class. The fields in the struct correspond to instance variables in the class.

> The name of the header file and the structure declared within it are derived from the name of the class. If the class passed to javah is inside a package, the package name is prepended to both the header file name and the structure name. Underscores (_) are used as name delimiters.

> By default javah creates a header file for each class listed on the command line and puts the files in the current directory. Use the -stubs option to create source files. Use the -o option to concatenate the results for all listed classes into a single file.

> The new native method interface, Java Native Interface (JNI), does not require header information or stub files. javah can still be used with the -jni option to generate native method function proptotypes needed for JNI-style native methods. The result is placed in the .h file.

> javah_g is a non-optimized version of javah suitable for use with debuggers like jdb.

## OPTIONS

> -o outputfile
>   Concatenates the resulting header or source files for all the classes listed on the command line into outputfile.

> -d directory
>   Sets the directory where javah saves the header files or the stub files.

> -td directory
>   Sets the directory where javah stores temporary files. By default, javah stores temporary files in the directory specified by the %TEMP% environment variable. If %TEMP% is unspecified, then javah checks for a %TMP% environment variable. And finally, if %TMP% is unspecified, javah creates the directory C:\tmp and stores the files there.

> -stubs
>   Causes javah to generate C declarations from the Java object file.

> -v
>   Indicates verbose output and causes javah to print a message to stdout concerning the status of the generated files.

> -help
>   Print out this message.

> -trace
>   Add tracing information to the `stubs` file.

> -version
>   Print out build version.

> -jni
>   Causes javah to create an output file containing JNI-style native method function prototypes.

> -classpath path
>   Specifies the path javah uses to look up classes. Overrides the default or the CLASSPATH environment variable if it is set. Directories are separated by semi-colons. Thus the general format for path is:

>          .;<your_path>

>   For example:

>          .;C:\users\dac\classes;C:\tools\java\classes

## ENVIRONMENT VARIABLES

> CLASSPATH
>   Used to provide the system a path to user-defined classes. Directories are separated by semi-colons, for example,

>          .;C:\users\dac\classes;C:\tools\java\classes

## SEE ALSO

> javac, java, jdb, javap, javadoc, CLASSPATH