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)