jdk/src/linux/doc/man/javac.1
author mikejwre
Wed, 09 Jun 2010 18:56:41 -0700
changeset 5634 895b66935810
parent 5506 202f599c92aa
child 5865 47da38a8c0f0
permissions -rw-r--r--
Merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
." Copyright 2000-2006 Sun Microsystems, Inc.  All Rights Reserved.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     2
." DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
."
90ce3da70b43 Initial load
duke
parents:
diff changeset
     4
." This code is free software; you can redistribute it and/or modify it
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
." under the terms of the GNU General Public License version 2 only, as
90ce3da70b43 Initial load
duke
parents:
diff changeset
     6
." published by the Free Software Foundation.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     7
."
90ce3da70b43 Initial load
duke
parents:
diff changeset
     8
." This code is distributed in the hope that it will be useful, but WITHOUT
90ce3da70b43 Initial load
duke
parents:
diff changeset
     9
." ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
." FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
." version 2 for more details (a copy is included in the LICENSE file that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
." accompanied this code).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
."
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
." You should have received a copy of the GNU General Public License version
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
." 2 along with this work; if not, write to the Free Software Foundation,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
." Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
."
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2692
diff changeset
    18
." Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2692
diff changeset
    19
." or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2692
diff changeset
    20
." questions.
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    21
."
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    22
.TH javac 1 "04 May 2009"
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    23
." Generated from HTML by html2man (author: Eric Armstrong)
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    26
.SH "Name"
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
javac \- Java programming language compiler
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
.SH "SYNOPSIS"
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    36
        \fP\f3javac\fP [ options ] [ sourcefiles ] [ classes ] [ @argfiles ]
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    37
.fl
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    38
      
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
    40
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
    41
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
Arguments may be in any order.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
    47
90ce3da70b43 Initial load
duke
parents:
diff changeset
    48
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    49
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
    50
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
    51
options 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    52
Command\-line options. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
sourcefiles 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
One or more source files to be compiled (such as MyClass.java). 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
.TP 3
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    57
classes 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    58
One or more classes to be processed for annotations (such as MyPackage.MyClass). 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    59
.TP 3
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
@argfiles 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
One or more files that lists options and source files. The \f2\-J\fP options are not allowed in these files. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
    63
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
.SH "DESCRIPTION"
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    71
The \f3javac\fP tool reads class and interface definitions, written in the Java programming language, and compiles them into bytecode class files. It can also process annotations in Java source files and classes.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    74
There are two ways to pass source code file names to \f3javac\fP:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
o
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
For a small number of source files, simply list the file names on the command line. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    81
o
90ce3da70b43 Initial load
duke
parents:
diff changeset
    82
For a large number of source files, list the file names in a file, separated by blanks or line breaks. Then use the list file name on the \f3javac\fP command line, preceded by an \f3@\fP character. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    83
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
    84
90ce3da70b43 Initial load
duke
parents:
diff changeset
    85
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    86
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    87
Source code file names must have \f2.java\fP suffixes, class file names must have \f2.class\fP suffixes, and both source and class files must have root names that identify the class. For example, a class called \f2MyClass\fP would be written in a source file called \f2MyClass.java\fP and compiled into a bytecode class file called \f2MyClass.class\fP.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    88
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    89
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    90
Inner class definitions produce additional class files. These class files have names combining the inner and outer class names, such as \f2MyClass$MyInnerClass.class\fP.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    91
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    92
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    93
You should arrange source files in a directory tree that reflects their package tree. For example, if you keep all your source files in \f3/workspace\fP, the source code for \f2com.mysoft.mypack.MyClass\fP should be in \f3/workspace/com/mysoft/mypack/MyClass.java\fP.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    94
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    95
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    96
By default, the compiler puts each class file in the same directory as its source file. You can specify a separate destination directory with \f3\-d\fP (see Options, below).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    97
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    98
.SH "OPTIONS"
90ce3da70b43 Initial load
duke
parents:
diff changeset
    99
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   100
90ce3da70b43 Initial load
duke
parents:
diff changeset
   101
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   102
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   103
The compiler has a set of standard options that are supported on the current development environment and will be supported in future releases. An additional set of non\-standard options are specific to the current virtual machine and compiler implementations and are subject to change in the future. Non\-standard options begin with \f3\-X\fP.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   104
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   105
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   106
Standard Options
90ce3da70b43 Initial load
duke
parents:
diff changeset
   107
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   108
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   109
90ce3da70b43 Initial load
duke
parents:
diff changeset
   110
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   111
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   112
.TP 3
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   113
\-Akey[=value] 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   114
Options to pass to annotation processors. These are not interpreted by javac directly, but are made available for use by individual processors. \f2key\fP should be one or more identifiers separated by ".". 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   115
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   116
\-cp path or \-classpath path 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   117
Specify where to find user class files, and (optionally) annotation processors and source files. This classpath overrides the user class path in the \f3CLASSPATH\fP environment variable. If neither \f3CLASSPATH\fP, \f3\-cp\fP nor \f3\-classpath\fP is specified, the user class path consists of the current directory. See 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   118
.na
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   119
\f2Setting the Class Path\fP @
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   120
.fi
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   121
http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpath for more details. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   122
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   123
If the \f3\-sourcepath\fP option is not specified, the user class path is also searched for source files. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   124
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   125
If the \f3\-processorpath\fP option is not specified, the classpath is also searched for annotation processors.  
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   126
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   127
As a special convenience, a class path element containing a basename of \f2*\fP is considered equivalent to specifying a list of all the files in the directory with the extension \f2.jar\fP or \f2.JAR\fP.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   128
.br
90ce3da70b43 Initial load
duke
parents:
diff changeset
   129
.br
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   130
For example, if directory \f2foo\fP contains \f2a.jar\fP and \f2b.JAR\fP, then the class path element \f2foo/*\fP is expanded to \f2A.jar:b.JAR\fP, except that the order of jar files is unspecified. All jar files in the specified directory, even hidden ones, are included in the list. A classpath entry consisting simply of \f2*\fP expands to a list of all the jar files in the current directory. The \f2CLASSPATH\fP environment variable, where defined, will be similarly expanded. \f3Note:\fP \  Depending of the configuration of your command line environment, you may have to quote the wild card character, for example, \f2javac \-cp "*.jar" MyClass.java\fP.  
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   131
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   132
\-Djava.ext.dirs=directories 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   133
Override the location of installed extensions. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   134
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   135
\-Djava.endorsed.dirs=directories 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   136
Override the location of endorsed standards path. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   137
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   138
\-d directory 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   139
Set the destination directory for class files. The directory must already exist; \f3javac\fP will not create it. If a class is part of a package, \f3javac\fP puts the class file in a subdirectory reflecting the package name, creating directories as needed. For example, if you specify \f3\-d /home/myclasses\fP and the class is called \f2com.mypackage.MyClass\fP, then the class file is called \f2/home/myclasses/com/mypackage/MyClass.class\fP. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   140
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   141
If \f3\-d\fP is not specified, \f3javac\fP puts each class files in the same directory as the source file from which it was generated. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   142
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   143
\f3Note:\fP \  The directory specified by \f3\-d\fP is not automatically added to your user class path.  
90ce3da70b43 Initial load
duke
parents:
diff changeset
   144
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   145
\-deprecation 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   146
Show a description of each use or override of a deprecated member or class. Without \f3\-deprecation\fP, \f3javac\fP shows a summary of the source files that use or override deprecated members or classes. \f3\-deprecation\fP is shorthand for \f3\-Xlint:deprecation\fP. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   147
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   148
\-encoding encoding 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   149
Set the source file encoding name, such as \f2EUC\-JP and UTF\-8\fP. If \f3\-encoding\fP is not specified, the platform default converter is used. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   150
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   151
\-g 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   152
Generate all debugging information, including local variables. By default, only line number and source file information is generated. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   153
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   154
\-g:none 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   155
Do not generate any debugging information. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   156
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   157
\-g:{keyword list} 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   158
Generate only some kinds of debugging information, specified by a comma separated list of keywords. Valid keywords are: 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   159
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   160
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   161
source 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   162
Source file debugging information 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   163
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   164
lines 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   165
Line number debugging information 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   166
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   167
vars 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   168
Local variable debugging information 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   169
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   170
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   171
\-help 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   172
Print a synopsis of standard options. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   173
.TP 3
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   174
\-implicit:{class,none} 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   175
Controls the generation of class files for implicitly loaded source files. To automatically generate class files, use \f3\-implicit:class\fP. To suppress class file generation, use \f3\-implicit:none\fP. If this option is not specified, the default is to automatically generate class files. In this case, the compiler will issue a warning if any such class files are generated when also doing annotation processing. The warning will not be issued if this option is set explicitly. See Searching For Types. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   176
.TP 3
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   177
\-nowarn 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   178
Disable warning messages. This has the same meaning as \f3\-Xlint:none\fP. 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   179
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   180
\-proc: {none,only} 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   181
Controls whether annotation processing and/or compilation is done. \f3\-proc:none\fP means that compilation takes place without annotation processing. \f3\-proc:only\fP means that only annotation processing is done, without any subsequent compilation. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   182
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   183
\-processor class1[,class2,class3...] 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   184
Names of the annotation processors to run. This bypasses the default discovery process. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   185
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   186
\-processorpath path 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   187
Specify where to find annotation processors; if this option is not used, the classpath will be searched for processors. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   188
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   189
\-s dir 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   190
Specify the directory where to place generated source files. The directory must already exist; \f3javac\fP will not create it. If a class is part of a package, the compiler puts the source file in a subdirectory reflecting the package name, creating directories as needed. For example, if you specify \f3\-s /home/mysrc\fP and the class is called \f2com.mypackage.MyClass\fP, then the source file will be placed in \f2/home/mysrc/com/mypackage/MyClass.java\fP. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   191
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   192
\-source release 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   193
Specifies the version of source code accepted. The following values for \f2release\fP are allowed: 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   194
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   195
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   196
1.3 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   197
The compiler does \f2not\fP support assertions, generics, or other language features introduced after JDK 1.3. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   198
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   199
1.4 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   200
The compiler accepts code containing assertions, which were introduced in JDK 1.4. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   201
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   202
1.5 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   203
The compiler accepts code containing generics and other language features introduced in JDK 5. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   204
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   205
5 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   206
Synonym for 1.5. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   207
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   208
1.6 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   209
This is the default value. No language changes were introduced in Java SE 6. However, encoding errors in source files are now reported as errors, instead of warnings, as previously. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   210
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   211
6 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   212
Synonym for 1.6. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   213
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   214
1.7 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   215
The compiler accepts code with features introduced in JDK 7. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   216
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   217
7 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   218
Synonym for 1.7. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   219
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   220
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   221
\-sourcepath sourcepath 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   222
Specify the source code path to search for class or interface definitions. As with the user class path, source path entries are separated by colons (\f3:\fP) and can be directories, JAR archives, or ZIP archives. If packages are used, the local path name within the directory or archive must reflect the package name. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   223
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   224
\f3Note:\fP \  Classes found through the classpath may be subject to automatic recompilation if their sources are also found. See Searching For Types.  
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   225
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   226
\-verbose 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   227
Verbose output. This includes information about each class loaded and each source file compiled. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   228
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   229
\-version 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   230
Print version information. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   231
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   232
\-X 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   233
Display information about non\-standard options and exit. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   234
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   235
90ce3da70b43 Initial load
duke
parents:
diff changeset
   236
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   237
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   238
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   239
Cross\-Compilation Options
90ce3da70b43 Initial load
duke
parents:
diff changeset
   240
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   241
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   242
90ce3da70b43 Initial load
duke
parents:
diff changeset
   243
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   244
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   245
By default, classes are compiled against the bootstrap and extension classes of the platform that \f3javac\fP shipped with. But \f3javac\fP also supports \f2cross\-compiling\fP, where classes are compiled against a bootstrap and extension classes of a different Java platform implementation. It is important to use \f3\-bootclasspath\fP and \f3\-extdirs\fP when cross\-compiling; see Cross\-Compilation Example below.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   246
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   247
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   248
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   249
\-target version 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   250
Generate class files that target a specified version of the VM. Class files will run on the specified target and on later versions, but not on earlier versions of the VM. Valid targets are \f31.1\fP \f31.2\fP \f31.3\fP \f31.4\fP \f31.5\fP (also \f35\fP) \f31.6\fP (also \f36\fP) and \f31.7\fP (also \f37\fP). 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   251
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   252
The default for \f3\-target\fP depends on the value of \f3\-source\fP: 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   253
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   254
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   255
o
90ce3da70b43 Initial load
duke
parents:
diff changeset
   256
If \-source is \f3not specified\fP, the value of \-target is \f31.6\fP 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   257
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   258
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   259
If \-source is \f31.2\fP, the value of \-target is \f31.4\fP 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   260
.TP 2
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   261
o
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   262
If \-source is \f31.3\fP, the value of \-target is \f31.4\fP 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   263
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   264
o
90ce3da70b43 Initial load
duke
parents:
diff changeset
   265
For \f3all other values\fP of \-source, the value of \-target is the value of \f3\-source\fP. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   266
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   267
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   268
\-bootclasspath bootclasspath 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   269
Cross\-compile against the specified set of boot classes. As with the user class path, boot class path entries are separated by colons (\f3:\fP) and can be directories, JAR archives, or ZIP archives. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   270
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   271
\-extdirs directories 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   272
Cross\-compile against the specified extension directories. \f2Directories\fP is a colon\-separated list of directories. Each JAR archive in the specified directories is searched for class files. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   273
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   274
90ce3da70b43 Initial load
duke
parents:
diff changeset
   275
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   276
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   277
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   278
Non\-Standard Options
90ce3da70b43 Initial load
duke
parents:
diff changeset
   279
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   280
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   281
90ce3da70b43 Initial load
duke
parents:
diff changeset
   282
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   283
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   284
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   285
\-Xbootclasspath/p:path 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   286
Prepend to the bootstrap class path. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   287
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   288
\-Xbootclasspath/a:path 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   289
Append to the bootstrap class path. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   290
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   291
\-Xbootclasspath/:path 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   292
Override location of bootstrap class files. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   293
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   294
\-Xlint 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   295
Enable all recommended warnings. In this release, all available warnings are recommended. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   296
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   297
\-Xlint:none 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   298
Disable all warnings not mandated by the Java Language Specification. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   299
.TP 3
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   300
\-Xlint:\-name 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   301
Disable warning \f2name\fP, where \f2name\fP is one of the warning names supported for \f3\-Xlint:\fP\f2name\fP, below. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   302
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   303
\-Xlint:unchecked 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   304
Give more detail for unchecked conversion warnings that are mandated by the Java Language Specification. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   305
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   306
\-Xlint:path 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   307
Warn about nonexistent path (classpath, sourcepath, etc) directories. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   308
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   309
\-Xlint:serial 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   310
Warn about missing \f2serialVersionUID\fP definitions on serializable classes. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   311
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   312
\-Xlint:finally 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   313
Warn about \f2finally\fP clauses that cannot complete normally. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   314
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   315
\-Xlint:fallthrough 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   316
Check \f2switch\fP blocks for fall\-through cases and provide a warning message for any that are found. Fall\-through cases are cases in a \f2switch\fP block, other than the last case in the block, whose code does not include a \f2break\fP statement, allowing code execution to "fall through" from that case to the next case. For example, the code following the \f2case 1\fP label in this \f2switch\fP block does not end with a \f2break\fP statement: 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   317
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   318
90ce3da70b43 Initial load
duke
parents:
diff changeset
   319
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   320
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   321
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   322
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   323
switch (x) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   324
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   325
case 1:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   326
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   327
       System.out.println("1");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   328
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   329
       //  No  break;  statement here.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   330
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   331
case 2:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   332
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   333
       System.out.println("2");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   334
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   335
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   336
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   337
            
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   338
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   339
\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   340
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   341
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   342
If the \f2\-Xlint:fallthrough\fP flag were used when compiling this code, the compiler would emit a warning about "possible fall\-through into case," along with the line number of the case in question. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   343
.TP 3
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   344
\-Xmaxerrs number 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   345
Set the maximum number of errors to print. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   346
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   347
\-Xmaxwarns number 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   348
Set the maximum number of warnings to print. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   349
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   350
\-Xstdout filename 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   351
Send compiler messages to the named file. By default, compiler messages go to \f2System.err\fP. 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   352
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   353
\-Xprefer:{newer,source} 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   354
Specify which file to read when both a source file and class file are found for a type. (See Searching For Types). If \f2\-Xprefer:newer\fP is used, it reads the newer of the source or class file for a type (default). If the \f2\-Xprefer:source\fP option is used, it reads source file. Use \f2\-Xprefer:source\fP when you want to be sure that any annotation processors can access annotations declared with a retention policy of \f2SOURCE\fP. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   355
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   356
\-Xprint 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   357
Print out textual representation of specified types for debugging purposes; perform neither annotation processing nor compilation. The format of the output may change. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   358
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   359
\-XprintProcessorInfo 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   360
Print information about which annotations a processor is asked to process. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   361
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   362
\-XprintRounds 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   363
Print information about initial and subsequent annotation processing rounds. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   364
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   365
90ce3da70b43 Initial load
duke
parents:
diff changeset
   366
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   367
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   368
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   369
The \-J Option
90ce3da70b43 Initial load
duke
parents:
diff changeset
   370
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   371
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   372
90ce3da70b43 Initial load
duke
parents:
diff changeset
   373
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   374
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   375
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   376
\-Joption 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   377
Pass \f2option\fP to the \f3java\fP launcher called by \f3javac\fP. For example, \f3\-J\-Xms48m\fP sets the startup memory to 48 megabytes. Although it does not begin with \f3\-X\fP, it is not a `standard option' of \f3javac\fP. It is a common convention for \f3\-J\fP to pass options to the underlying VM executing applications written in Java. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   378
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   379
\f3Note:\fP \  \f3CLASSPATH\fP, \f3\-classpath\fP, \f3\-bootclasspath\fP, and \f3\-extdirs\fP do \f2not\fP specify the classes used to run \f3javac\fP. Fiddling with the implementation of the compiler in this way is usually pointless and always risky. If you do need to do this, use the \f3\-J\fP option to pass through options to the underlying \f3java\fP launcher.  
90ce3da70b43 Initial load
duke
parents:
diff changeset
   380
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   381
90ce3da70b43 Initial load
duke
parents:
diff changeset
   382
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   383
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   384
.SH "COMMAND LINE ARGUMENT FILES"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   385
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   386
90ce3da70b43 Initial load
duke
parents:
diff changeset
   387
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   388
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   389
To shorten or simplify the javac command line, you can specify one or more files that themselves contain arguments to the \f2javac\fP command (except \f2\-J\fP options). This enables you to create javac commands of any length on any operating system.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   390
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   391
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   392
An argument file can include javac options and source filenames in any combination. The arguments within a file can be space\-separated or newline\-separated. If a filename contains embedded spaces, put the whole filename in double quotes.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   393
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   394
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   395
Filenames within an argument file are relative to the current directory, not the location of the argument file. Wildcards (*) are not allowed in these lists (such as for specifying \f2*.java\fP). Use of the '\f2@\fP' character to recursively interpret files is not supported. The \f2\-J\fP options are not supported because they are passed to the launcher, which does not support argument files.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   396
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   397
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   398
When executing javac, pass in the path and name of each argument file with the '\f2@\fP' leading character. When javac encounters an argument beginning with the character `\f2@\fP', it expands the contents of that file into the argument list.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   399
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   400
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   401
Example \- Single Arg File
90ce3da70b43 Initial load
duke
parents:
diff changeset
   402
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   403
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   404
You could use a single argument file named "\f2argfile\fP" to hold all javac arguments:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   405
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   406
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   407
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   408
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   409
  % \fP\f3javac @argfile\fP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   410
.fl
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   411
      
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   412
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   413
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   414
90ce3da70b43 Initial load
duke
parents:
diff changeset
   415
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   416
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   417
This argument file could contain the contents of both files shown in the next example.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   418
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   419
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   420
Example \- Two Arg Files
90ce3da70b43 Initial load
duke
parents:
diff changeset
   421
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   422
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   423
You can create two argument files \-\- one for the javac options and the other for the source filenames: (Notice the following lists have no line\-continuation characters.)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   424
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   425
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   426
Create a file named "\f2options\fP" containing:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   427
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   428
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   429
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   430
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   431
     \-d classes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   432
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   433
     \-g
90ce3da70b43 Initial load
duke
parents:
diff changeset
   434
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   435
     \-sourcepath /java/pubs/ws/1.3/src/share/classes
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   436
.fl
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   437
      
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   438
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   439
\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   440
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   441
90ce3da70b43 Initial load
duke
parents:
diff changeset
   442
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   443
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   444
Create a file named "\f2classes\fP" containing:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   445
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   446
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   447
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   448
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   449
     MyClass1.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   450
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   451
     MyClass2.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   452
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   453
     MyClass3.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   454
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   455
      
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   456
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   457
\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   458
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   459
90ce3da70b43 Initial load
duke
parents:
diff changeset
   460
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   461
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   462
You would then run \f3javac\fP with:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   463
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   464
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   465
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   466
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   467
  % \fP\f3javac @options @classes\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   468
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   469
      
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   470
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   471
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   472
90ce3da70b43 Initial load
duke
parents:
diff changeset
   473
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   474
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   475
Example \- Arg Files with Paths
90ce3da70b43 Initial load
duke
parents:
diff changeset
   476
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   477
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   478
The argument files can have paths, but any filenames inside the files are relative to the current working directory (not \f2path1\fP or \f2path2\fP):
90ce3da70b43 Initial load
duke
parents:
diff changeset
   479
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   480
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   481
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   482
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   483
  % \fP\f3javac @path1/options @path2/classes\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   484
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   485
      
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   486
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   487
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   488
90ce3da70b43 Initial load
duke
parents:
diff changeset
   489
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   490
.SH "ANNOTATION PROCESSING"
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   491
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   492
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   493
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   494
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   495
\f3javac\fP provides direct support for annotation processing, superseding the need for the separate annotation processing tool, \f3apt\fP.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   496
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   497
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   498
The API for annotation processors is defined in the \f2javax.annotation.processing\fP and \f2javax.lang.model\fP packages and subpackages.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   499
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   500
.SS 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   501
Overview of annotation processing
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   502
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   503
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   504
Unless annotation processing is disabled with the \f3\-proc:none\fP option, the compiler searches for any annotation processors that are available. The search path can be specified with the \f3\-processorpath\fP option; if it is not given, the user class path is used. Processors are located by means of service provider\-configuration files named
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   505
.br
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   506
\f2\  META\-INF/services/javax.annotation.processing.Processor\fP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   507
.br
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   508
on the search path. Such files should contain the names of any annotation processors to be used, listed one per line. Alternatively, processors can be specified explicitly, using the \f3\-processor\fP option.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   509
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   510
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   511
After scanning the source files and classes on the command line to determine what annotations are present, the compiler queries the processors to determine what annotations they process. When a match is found, the processor will be invoked. A processor may "claim" the annotations it processes, in which case no further attempt is made to find any processors for those annotations. Once all annotations have been claimed, the compiler does not look for additional processors.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   512
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   513
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   514
If any processors generate any new source files, another round of annotation processing will occur: any newly generated source files will be scanned, and the annotations processed as before. Any processors invoked on previous rounds will also be invoked on all subsequent rounds. This continues until no new source files are generated.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   515
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   516
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   517
After a round occurs where no new source files are generated, the annotation processors will be invoked one last time, to give them a chance to complete any work they may need to do. Finally, unless the \f3\-proc:only\fP option is used, the compiler will compile the original and all the generated source files.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   518
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   519
.SS 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   520
Implicitly loaded source files
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   521
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   522
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   523
To compile a set of source files, the compiler may need to implicitly load additional source files. (See Searching For Types). Such files are currently not subject to annotation processing. By default, the compiler will give a warning if annotation processing has occurred and any implicitly loaded source files are compiled. See the \-implicit option for ways to suppress the warning.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   524
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   525
.SH "SEARCHING FOR TYPES"
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   526
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   527
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   528
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   529
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   530
When compiling a source file, the compiler often needs information about a type whose definition did not appear in the source files given on the command line. The compiler needs type information for every class or interface used, extended, or implemented in the source file. This includes classes and interfaces not explicitly mentioned in the source file but which provide information through inheritance.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   531
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   532
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   533
For example, when you subclass \f3java.applet.Applet\fP, you are also using \f3Applet's\fP ancestor classes: \f3java.awt.Panel\fP, \f3java.awt.Container\fP, \f3java.awt.Component\fP, and \f3java.lang.Object\fP.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   534
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   535
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   536
When the compiler needs type information, it looks for a source file or class file which defines the type. The compiler searches for class files first in the bootstrap and extension classes, then in the user class path (which by default is the current directory). The user class path is defined by setting the \f3CLASSPATH\fP environment variable or by using the \f3\-classpath\fP command line option. (For details, see 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   537
.na
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   538
\f2Setting the Class Path\fP @
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   539
.fi
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   540
http://java.sun.com/javase/6/docs/technotes/tools/index.html#classpath).
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   541
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   542
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   543
If you set the \-sourcepath option, the compiler searches the indicated path for source files; otherwise the compiler searches the user class path for both class files and source files.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   544
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   545
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   546
You can specify different bootstrap or extension classes with the \f3\-bootclasspath\fP and \f3\-extdirs\fP options; see Cross\-Compilation Options below.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   547
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   548
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   549
A successful type search may produce a class file, a source file, or both. If both are found, you can use the \-Xprefer option to instruct the compiler which to use. If \f3newer\fP is given, the compiler will use the newer of the two files. If \f3source\fP is given, it will use the source file. The default is \f3newer\fP.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   550
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   551
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   552
If a type search finds a source file for a required type, either by itself, or as a result of the setting for \f3\-Xprefer\fP, the compiler will read the source file to get the information it needs. In addition, it will by default compile the source file as well. You can use the \-implicit option to specify the behavior. If \f3none\fP is given, no class files will be generated for the source file. If \f3class\fP is given, class files will be generated for the source file.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   553
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   554
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   555
The compiler may not discover the need for some type information until after annotation processing is complete. If the type information is found in a source file and no \f3\-implicit\fP option is given, the compiler will give a warning that the file is being compiled without being subject to annotation processing. To disable the warning, either specify the file on the command line (so that it will be subject to annotation processing) or use the \f3\-implicit\fP option to specify whether or not class files should be generated for such source files.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   556
.LP
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   557
.SH "PROGRAMMATIC INTERFACE"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   558
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   559
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   560
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   561
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   562
\f3javac\fP supports the new Java Compiler API defined by the classes and interfaces in the \f2javax.tools\fP package.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   563
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   564
.SS 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   565
Example
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   566
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   567
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   568
To perform a compilation using arguments as you would give on the command line, you can use the following:
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   569
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   570
.nf
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   571
\f3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   572
.fl
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   573
JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   574
.fl
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   575
int rc = javac.run(null, null, null, args);
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   576
.fl
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   577
      
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   578
.fl
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   579
\fP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   580
.fi
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   581
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   582
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   583
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   584
This will write any diagnostics to the standard output stream, and return the exit code that \f3javac\fP would give when invoked from the command line.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   585
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   586
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   587
You can use other methods on the \f2javax.tools.JavaCompiler\fP interface to handle diagnostics, control where files are read from and written to, and so on.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   588
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   589
.SS 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   590
Old Interface
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   591
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   592
.RS 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   593
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   594
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   595
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   596
\f3Note:\fP \  This API is retained for backwards compatibility only; all new code should use the Java Compiler API, described above.
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   597
.LP
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   598
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   599
The \f2com.sun.tools.javac.Main\fP class provides two static methods to invoke the compiler from a program:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   600
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   601
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   602
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   603
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   604
public static int compile(String[] args);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   605
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   606
public static int compile(String[] args, PrintWriter out);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   607
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   608
      
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   609
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   610
\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   611
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   612
90ce3da70b43 Initial load
duke
parents:
diff changeset
   613
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   614
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   615
The \f2args\fP parameter represents any of the command line arguments that would normally be passed to the javac program and are outlined in the above Synopsis section.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   616
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   617
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   618
The \f2out\fP parameter indicates where the compiler's diagnostic output is directed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   619
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   620
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   621
The return value is equivalent to the exit value from \f3javac\fP.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   622
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   623
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   624
Note that all \f3other\fP classes and methods found in a package whose name starts with \f2com.sun.tools.javac\fP (informally known as sub\-packages of \f2com.sun.tools.javac\fP) are strictly internal and subject to change at any time.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   625
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   626
.RE
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   627
.SH "EXAMPLES"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   628
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   629
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   630
Compiling a Simple Program
90ce3da70b43 Initial load
duke
parents:
diff changeset
   631
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   632
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   633
90ce3da70b43 Initial load
duke
parents:
diff changeset
   634
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   635
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   636
One source file, \f2Hello.java\fP, defines a class called \f3greetings.Hello\fP. The \f2greetings\fP directory is the package directory both for the source file and the class file and is off the current directory. This allows us to use the default user class path. It also makes it unnecessary to specify a separate destination directory with \f3\-d\fP.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   637
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   638
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   639
90ce3da70b43 Initial load
duke
parents:
diff changeset
   640
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   641
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   642
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   643
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   644
% \fP\f3ls\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   645
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   646
greetings/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   647
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   648
% \f3ls greetings\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   649
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   650
Hello.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   651
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   652
% \f3cat greetings/Hello.java\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   653
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   654
package greetings;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   655
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   656
90ce3da70b43 Initial load
duke
parents:
diff changeset
   657
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   658
public class Hello {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   659
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   660
    public static void main(String[] args) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   661
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   662
        for (int i=0; i < args.length; i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   663
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   664
            System.out.println("Hello " + args[i]);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   665
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   666
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   667
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   668
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   669
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   670
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   671
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   672
% \f3javac greetings/Hello.java\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   673
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   674
% \f3ls greetings\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   675
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   676
Hello.class   Hello.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   677
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   678
% \f3java greetings.Hello World Universe Everyone\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   679
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   680
Hello World
90ce3da70b43 Initial load
duke
parents:
diff changeset
   681
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   682
Hello Universe
90ce3da70b43 Initial load
duke
parents:
diff changeset
   683
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   684
Hello Everyone
90ce3da70b43 Initial load
duke
parents:
diff changeset
   685
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   686
        
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   687
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   688
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   689
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   690
90ce3da70b43 Initial load
duke
parents:
diff changeset
   691
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   692
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   693
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   694
Compiling Multiple Source Files
90ce3da70b43 Initial load
duke
parents:
diff changeset
   695
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   696
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   697
90ce3da70b43 Initial load
duke
parents:
diff changeset
   698
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   699
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   700
This example compiles all the source files in the package \f2greetings\fP.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   701
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   702
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   703
90ce3da70b43 Initial load
duke
parents:
diff changeset
   704
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   705
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   706
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   707
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   708
% \fP\f3ls\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   709
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   710
greetings/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   711
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   712
% \f3ls greetings\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   713
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   714
Aloha.java         GutenTag.java      Hello.java         Hi.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   715
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   716
% \f3javac greetings/*.java\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   717
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   718
% \f3ls greetings\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   719
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   720
Aloha.class         GutenTag.class      Hello.class         Hi.class
90ce3da70b43 Initial load
duke
parents:
diff changeset
   721
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   722
Aloha.java          GutenTag.java       Hello.java          Hi.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   723
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   724
90ce3da70b43 Initial load
duke
parents:
diff changeset
   725
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   726
        
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   727
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   728
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   729
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   730
90ce3da70b43 Initial load
duke
parents:
diff changeset
   731
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   732
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   733
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   734
Specifying a User Class Path
90ce3da70b43 Initial load
duke
parents:
diff changeset
   735
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   736
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   737
90ce3da70b43 Initial load
duke
parents:
diff changeset
   738
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   739
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   740
Having changed one of the source files in the previous example, we recompile it:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   741
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   742
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   743
90ce3da70b43 Initial load
duke
parents:
diff changeset
   744
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   745
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   746
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   747
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   748
% \fP\f3pwd\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   749
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   750
/examples
90ce3da70b43 Initial load
duke
parents:
diff changeset
   751
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   752
% \f3javac greetings/Hi.java\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   753
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   754
        
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   755
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   756
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   757
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   758
90ce3da70b43 Initial load
duke
parents:
diff changeset
   759
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   760
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   761
Since \f2greetings.Hi\fP refers to other classes in the \f2greetings\fP package, the compiler needs to find these other classes. The example above works, because our default user class path happens to be the directory containing the package directory. But suppose we want to recompile this file and not worry about which directory we're in? Then we need to add \f2/examples\fP to the user class path. We can do this by setting \f3CLASSPATH\fP, but here we'll use the \f3\-classpath\fP option.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   762
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   763
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   764
90ce3da70b43 Initial load
duke
parents:
diff changeset
   765
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   766
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   767
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   768
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   769
% \fP\f3javac \-classpath /examples /examples/greetings/Hi.java\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   770
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   771
        
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   772
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   773
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   774
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   775
90ce3da70b43 Initial load
duke
parents:
diff changeset
   776
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   777
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   778
If we change \f2greetings.Hi\fP again, to use a banner utility, that utility also needs to be accessible through the user class path.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   779
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   780
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   781
90ce3da70b43 Initial load
duke
parents:
diff changeset
   782
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   783
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   784
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   785
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   786
% \fP\f3javac \-classpath /examples:/lib/Banners.jar \\ 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   787
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   788
            /examples/greetings/Hi.java\fP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   789
.fl
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   790
        
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   791
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   792
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   793
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   794
90ce3da70b43 Initial load
duke
parents:
diff changeset
   795
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   796
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   797
To execute a class in \f2greetings\fP, we need access both to \f2greetings\fP and to the classes it uses.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   798
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   799
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   800
90ce3da70b43 Initial load
duke
parents:
diff changeset
   801
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   802
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   803
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   804
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   805
% \fP\f3java \-classpath /examples:/lib/Banners.jar greetings.Hi\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   806
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   807
        
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   808
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   809
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   810
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   811
90ce3da70b43 Initial load
duke
parents:
diff changeset
   812
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   813
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   814
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   815
Separating Source Files and Class Files
90ce3da70b43 Initial load
duke
parents:
diff changeset
   816
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   817
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   818
90ce3da70b43 Initial load
duke
parents:
diff changeset
   819
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   820
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   821
It often makes sense to keep source files and class files in separate directories, especially on large projects. We use \f3\-d\fP to indicate the separate class file destination. Since the source files are not in the user class path, we use \f3\-sourcepath\fP to help the compiler find them.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   822
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   823
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   824
90ce3da70b43 Initial load
duke
parents:
diff changeset
   825
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   826
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   827
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   828
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   829
% \fP\f3ls\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   830
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   831
classes/  lib/      src/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   832
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   833
% \f3ls src\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   834
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   835
farewells/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   836
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   837
% \f3ls src/farewells\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   838
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   839
Base.java      GoodBye.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   840
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   841
% \f3ls lib\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   842
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   843
Banners.jar
90ce3da70b43 Initial load
duke
parents:
diff changeset
   844
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   845
% \f3ls classes\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   846
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   847
% \f3javac \-sourcepath src \-classpath classes:lib/Banners.jar \\ 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   848
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   849
            src/farewells/GoodBye.java \-d classes\fP
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   850
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   851
% \f3ls classes\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   852
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   853
farewells/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   854
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   855
% \f3ls classes/farewells\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   856
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   857
Base.class      GoodBye.class
90ce3da70b43 Initial load
duke
parents:
diff changeset
   858
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   859
90ce3da70b43 Initial load
duke
parents:
diff changeset
   860
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   861
        
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   862
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   863
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   864
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   865
90ce3da70b43 Initial load
duke
parents:
diff changeset
   866
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   867
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   868
\f3Note:\fP \  The compiler compiled \f2src/farewells/Base.java\fP, even though we didn't specify it on the command line. To trace automatic compiles, use the \f3\-verbose\fP option.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   869
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   870
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   871
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   872
Cross\-Compilation Example
90ce3da70b43 Initial load
duke
parents:
diff changeset
   873
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   874
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   875
90ce3da70b43 Initial load
duke
parents:
diff changeset
   876
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   877
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   878
Here we use \f3javac\fP to compile code that will run on a 1.7 VM.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   879
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   880
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   881
90ce3da70b43 Initial load
duke
parents:
diff changeset
   882
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   883
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   884
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   885
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   886
% \fP\f3javac \-target 1.7 \-bootclasspath jdk1.7.0/lib/rt.jar \\ 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   887
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   888
            \-extdirs "" OldCode.java\fP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   889
.fl
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   890
        
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   891
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   892
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   893
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   894
90ce3da70b43 Initial load
duke
parents:
diff changeset
   895
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   896
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   897
The \f3\-target 1.7\fP option ensures that the generated class files will be compatible with 1.7 VMs. By default, \f3javac\fP compiles for JDK 6.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   898
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   899
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   900
The Java Platform JDK's \f3javac\fP would also by default compile against its own bootstrap classes, so we need to tell \f3javac\fP to compile against JDK 1.7 bootstrap classes instead. We do this with \f3\-bootclasspath\fP and \f3\-extdirs\fP. Failing to do this might allow compilation against a Java Platform API that would not be present on a 1.7 VM and would fail at runtime.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   901
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   902
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   903
.SH "SEE ALSO"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   904
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   905
90ce3da70b43 Initial load
duke
parents:
diff changeset
   906
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   907
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   908
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   909
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   910
.na
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   911
\f2The javac Guide\fP @
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   912
.fi
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   913
http://java.sun.com/javase/6/docs/technotes/guides/javac/index.html 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   914
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   915
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   916
java(1) \- the Java Application Launcher 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   917
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   918
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   919
jdb(1) \- Java Application Debugger 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   920
.TP 2
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   921
o
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   922
javah(1) \- C Header and Stub File Generator 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   923
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   924
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   925
javap(1) \- Class File Disassembler 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   926
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   927
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   928
javadoc(1) \- API Documentation Generator 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   929
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   930
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   931
jar(1) \- JAR Archive Tool 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   932
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   933
o
90ce3da70b43 Initial load
duke
parents:
diff changeset
   934
.na
90ce3da70b43 Initial load
duke
parents:
diff changeset
   935
\f2The Java Extensions Framework\fP @
90ce3da70b43 Initial load
duke
parents:
diff changeset
   936
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   937
http://java.sun.com/javase/6/docs/technotes/guides/extensions/index.html 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   938
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   939
90ce3da70b43 Initial load
duke
parents:
diff changeset
   940
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   941
90ce3da70b43 Initial load
duke
parents:
diff changeset
   942
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   943