man pages for javac
SunOS 5.8 Last change: 18 Jan 1998
NAME
javac - Java compiler
SYNOPSIS
javac [ -classpath path ] [ -d directory ] [ -depend ]
[ -deprecation ] [ -encoding encoding_name ]
[ -g ] [ -Jjavaoption ] [ -nowarn ] [ -O ]
[ -verbose ] filename.java ...
javac_g [ -classpath path ] [ -d directory ] [ -depend ]
[ -deprecation ] [ -encoding encoding_name ]
[ -g ] [ -Jjavaoption ] [ -nowarn ] [ -O ]
[ -verbose ] filename.java ...
DESCRIPTION
The javac command compiles Java source code into Java
bytecodes that can then be used by the java(1) interpreter
to interpret the Java bytecodes.
Java source code must be contained in files which filenames
thatend with the .java extension. The file name must be con-
structed from the class name, as classname.java, if the
class is public or is referenced from another source file.
For every class defined in each source file compiled by
javac, the compiler stores the resulting bytecodes in a
class file with a name of the form classname.class. Unless
you specify the -d option, the compiler places each class
file in the same directory as the corresponding source file.
When the compiler must refer to your own classes, you need
to specify their location. Use the -classpath option or
CLASSPATH environment variable to do this. The class path is
a sequence of directories (or zip files) that javac searches
for classes not already defined in any of the files speci-
fied directly as command arguments. The compiler looks in
the class path for both a source file and a class file,
recompiling the source (and regenerating the class file) if
it is newer.
Set the property javac.pipe.output to true to send output
messages to System.out. Set javac.pipe.output to FALSE,
that is, do not set it, to send output messages to
System.err.
OPTIONS
-classpath path
Specifies the path javac uses to look up
classes needed to run javac or being refer-
enced by other classes you are compiling. If
this option is not specified, the default
value is taken from the CLASSPATH environment
variable. If CLASSPATH is not set, the
default is the current directory (".") fol-
lowed by the location of the system classes
shipped with the JDK. Directories (or zip
files) are separated by colons. It is often
useful for the directory containing the
source files to be on the class path. You
should always include the system classes at
the end of the path. For example:
example% javac -classpath
.:/home/avh/classes:/usr/local/java/classes
...
-d directory Specifies the root directory of the class
file hierarchy. In other words, this is
essentially a destination directory for your
compiled classes. For example, doing:
example% javac -d /home/avh/classes
MyProgram.java
causes the compiled class files for the
classes in the MyProgram.java source file to
be saved in the directory /home/avh/classes.
If your classes are defined in the package
demos.awt, the class files would be placed in
the directory /home/avh/classes/demos/awt.
Please note that the -d and -classpath
options have independent effects. The com-
piler reads only from the class path, and
writes only to the destination directory. It
is often useful for the destination directory
to be on the class path. If the -d option is
not specified, the source files should be
stored in a directory hierarchy that reflects
the package structure, so that the resulting
class files can be easily located.
-depend This option makes the compiler consider
recompiling class files that are referenced
from other class files. Normally, it only
recompiles missing or out-of-date class files
that are referred to from source code.
-deprecation Generate a warning for every use or override
of a deprecated member or class. A member or
class is deprecated if its documentation com-
ment contains the @deprecated tag. The com-
piler will emit a warning at the end of
compilation whether or not -deprecation is
used; this option causes the location of each
individual use or override to be noted.
Deprecated members or classes are deli-
berately not mentioned if the source file
containing the deprecation is being recom-
piled. This can happen because the file is
on the command line or because -depend is
used and the source file was out of date.
-encoding encoding_name
Specify the source file encoding name, such
as EUCJIS/SJIS. If this option is not speci-
fied, then the platform default converter is
used.
-g Enables generation of information about local
variables for use by Java debugging tools. By
default, only line number information is gen-
erated.
Prior to 1.2, the -g and -O options were mutually exclusive.
In 1.2, it is possible to combine -g with -O, but the
shortcuts taken by optimized code may occasionally produce
surprising debugging results. For example, declared vari-
ables may not exist and code may appear to move or not be
executed at all.
-nodebug Do not generate line number more local vari-
able debugging information.
-Jjavaoption Passes through the string javaoption as a
single argument to the java(1) interpreter
that runs the compiler. The argument should
not contain spaces. Multiple argument words
must all begin with the prefix -J, which is
stripped. This is useful for adjusting the
compiler's execution environment or memory
usage.
-nowarn Turns off warnings. If used, the compiler
does not print out any warnings.
-O Directs the compiler to try to generate fas-
ter code This option may slow down compila-
tion, make larger class files, and/or make it
difficult to debug. -O implicitly turns on
-depend and turns off -g.
This option informs the compiler that all
generated class files are guaranteed to be
delivered and upgraded as a unit, enabling
optimizations that may otherwise break binary
compatibility. Use this option with discre-
tion.
The Java Language Specification section
13.4.21 describes situations in which it is
legal to use a java compiler to inline
methods. The compiler will only optimize code
for source which is available during the com-
pilation, so the only .java files discover-
able by the compiler should be for classes
intended to be delivered or upgraded as a
unit. In particular, ensure that no sources
for other classes are accessible on
CLASSPATH, keeping in mind that the present
working directory, `.', is appended to
CLASSPATH.
To ensure that a product is able to run on
1.1 as well as future binary-compatible java
virtual machines, one must ensure that any
sources for JDK 1.1 classes are never avail-
able along CLASSPATH while using -O.
-verbose Causes the compiler and linker to print out
messages about what source files are being
compiled and what class files are being
loaded.
EXAMPLE
Compiling One or More Classes
In this example, the source files are located at
/home/ws/src/java/awt/*.java.
% cd /home/ws/src/java/awt/
% javac Button.java Canvas.java
Compiles the two classes.
ENVIRONMENT VARIABLES
CLASSPATH Used to provide the system with a path to
user-defined classes. Directories (or zip
files) are separated by colons, for example,
.:/home/avh/classes:/usr/local/java/classes
ATTRIBUTES
See attributes(5) for a description of the following attri-
butes:
__________________________________
| ATTRIBUTE TYPE| ATTRIBUTE VALUE|
|__________________________________
| Availability | SUNWjvdev |
|_______________|_________________|
SEE ALSO
java(1), javadoc(1), javah(1), javap(1), jdb(1), attri-
butes(5)