jdk/src/linux/doc/man/javac.1
author alanb
Wed, 05 Jun 2013 13:57:16 +0100
changeset 17950 b2d5b298ec6e
parent 9573 c02ff5a7c67b
child 21743 3d979da7bdf0
permissions -rw-r--r--
8015880: GenerateBreakIteratorData build warning Reviewed-by: peytoia
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
     1
." Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved.
2
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
."
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
    22
.TH javac 1 "10 May 2011"
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    23
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    25
.SH "Name"
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    26
javac \- Java programming language compiler
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
.SH "SYNOPSIS"
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    33
        \fP\f3javac\fP [ options ] [ sourcefiles ] [ classes ] [ @argfiles ]
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    34
.fl
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
    35
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    40
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    41
Arguments may be in any order.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
options 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
Command\-line options. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    47
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
    48
sourcefiles 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    49
One or more source files to be compiled (such as MyClass.java). 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    50
.TP 3
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    51
classes 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    52
One or more classes to be processed for annotations (such as MyPackage.MyClass). 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    53
.TP 3
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
@argfiles 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
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
    56
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
    57
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
.SH "DESCRIPTION"
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    62
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
    63
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    65
There are two ways to pass source code file names to \f3javac\fP:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
o
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
For a small number of source files, simply list the file names on the command line. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
o
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
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
    74
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
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
    79
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    81
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
    82
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    83
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    84
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
    85
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    86
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    87
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
    88
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    89
.SH "OPTIONS"
90ce3da70b43 Initial load
duke
parents:
diff changeset
    90
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    91
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    92
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
    93
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    94
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    95
Standard Options
90ce3da70b43 Initial load
duke
parents:
diff changeset
    96
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
    97
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
    98
.TP 3
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
    99
\-Akey[=value] 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   100
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
   101
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   102
\-cp path or \-classpath path 
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   103
Specify where to find user class files, and (optionally) annotation processors and source files. This class path 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 Setting the Class Path for more details.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   104
.br
90ce3da70b43 Initial load
duke
parents:
diff changeset
   105
.br
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   106
>If the \f3\-sourcepath\fP option is not specified, the user class path is also searched for source files.
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   107
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   108
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   109
If the \f3\-processorpath\fP option is not specified, the class path is also searched for annotation processors. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   110
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   111
\-Djava.ext.dirs=directories 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   112
Override the location of installed extensions. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   113
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   114
\-Djava.endorsed.dirs=directories 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   115
Override the location of endorsed standards path. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   116
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   117
\-d directory 
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   118
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.
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   119
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   120
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   121
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.
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   122
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   123
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   124
\f3Note:\fP The directory specified by \f3\-d\fP is not automatically added to your user class path. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   125
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   126
\-deprecation 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   127
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
   128
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   129
\-encoding encoding 
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   130
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.  
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   131
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   132
\-endorseddirs directories 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   133
Override the location of endorsed standards path. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   134
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   135
\-extdirs directories 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   136
Overrides the location of the \f2ext\fP directory. The \f2directories\fP variable is a colon\-separated list of directories. Each JAR archive in the specified directories is searched for class files. All JAR archives found are automatically part of the class path.
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   137
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   138
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   139
If you are cross\-compiling (compiling classes against bootstrap and extension classes of a different Java platform implementation), this option specifies the directories that contain the extension classes. See Cross\-Compilation Options for more information. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   140
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   141
\-g 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   142
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
   143
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   144
\-g:none 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   145
Do not generate any debugging information. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   146
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   147
\-g:{keyword list} 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   148
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
   149
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   150
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   151
source 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   152
Source file debugging information 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   153
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   154
lines 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   155
Line number debugging information 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   156
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   157
vars 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   158
Local variable debugging information 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   159
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   160
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   161
\-help 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   162
Print a synopsis of standard options. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   163
.TP 3
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   164
\-implicit:{class,none} 
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   165
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.  
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   166
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   167
\-Joption 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   168
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. It is a common convention for \f3\-J\fP to pass options to the underlying VM executing applications written in Java.
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   169
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   170
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   171
\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. 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   172
.TP 3
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   173
\-nowarn 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   174
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
   175
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   176
\-proc: {none,only} 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   177
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
   178
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   179
\-processor class1[,class2,class3...] 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   180
Names of the annotation processors to run. This bypasses the default discovery process. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   181
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   182
\-processorpath path 
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   183
Specify where to find annotation processors; if this option is not used, the class path will be searched for processors. 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   184
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   185
\-s dir 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   186
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
   187
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   188
\-source release 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   189
Specifies the version of source code accepted. The following values for \f2release\fP are allowed: 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   190
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   191
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   192
1.3 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   193
The compiler does \f2not\fP support assertions, generics, or other language features introduced after JDK 1.3. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   194
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   195
1.4 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   196
The compiler accepts code containing assertions, which were introduced in JDK 1.4. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   197
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   198
1.5 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   199
The compiler accepts code containing generics and other language features introduced in JDK 5. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   200
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   201
5 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   202
Synonym for 1.5. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   203
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   204
1.6 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   205
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
   206
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   207
6 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   208
Synonym for 1.6. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   209
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   210
1.7 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   211
The compiler accepts code with features introduced in JDK 7. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   212
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   213
7 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   214
Synonym for 1.7. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   215
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   216
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   217
\-sourcepath sourcepath 
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   218
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.
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   219
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   220
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   221
\f3Note:\fP Classes found through the class path may be subject to automatic recompilation if their sources are also found. See Searching For Types. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   222
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   223
\-verbose 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   224
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
   225
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   226
\-version 
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   227
Print version information.  
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   228
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   229
\-Werror 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   230
Terminate compilation if warnings occur. 
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
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   238
Cross\-Compilation Options
90ce3da70b43 Initial load
duke
parents:
diff changeset
   239
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   240
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   241
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
   242
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   243
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   244
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   245
\-target version 
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   246
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).
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   247
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   248
.br
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   249
The default for \f3\-target\fP depends on the value of \f3\-source\fP: 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   250
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   251
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   252
o
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   253
If \-source is \f3not specified\fP, the value of \-target is \f31.7\fP 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   254
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   255
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   256
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
   257
.TP 2
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   258
o
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   259
If \-source is \f31.3\fP, the value of \-target is \f31.4\fP 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   260
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   261
o
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   262
For \f3all other values\fP of \-source, the value of \f3\-target\fP is the value of \f3\-source\fP. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   263
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   264
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   265
\-bootclasspath bootclasspath 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   266
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
   267
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   268
90ce3da70b43 Initial load
duke
parents:
diff changeset
   269
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   270
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   271
Non\-Standard Options
90ce3da70b43 Initial load
duke
parents:
diff changeset
   272
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   273
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   274
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   275
\-Xbootclasspath/p:path 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   276
Prepend to the bootstrap class path. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   277
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   278
\-Xbootclasspath/a:path 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   279
Append to the bootstrap class path. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   280
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   281
\-Xbootclasspath/:path 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   282
Override location of bootstrap class files. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   283
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   284
\-Xlint 
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   285
Enable all recommended warnings. In this release, enabling all available warnings is recommended. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   286
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   287
\-Xlint:all 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   288
Enable all recommended warnings. In this release, enabling all available warnings is recommended. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   289
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   290
\-Xlint:none 
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   291
Disable all warnings. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   292
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   293
\-Xlint:name 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   294
Enable warning \f2name\fP. See the section Warnings That Can Be Enabled or Disabled with \-Xlint Option for a list of warnings you can enable with this option. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   295
.TP 3
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   296
\-Xlint:\-name 
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   297
Disable warning \f2name\fP. See the section Warnings That Can Be Enabled or Disabled with \-Xlint Option for a list of warnings you can disable with this option. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   298
.TP 3
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   299
\-Xmaxerrs number 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   300
Set the maximum number of errors to print. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   301
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   302
\-Xmaxwarns number 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   303
Set the maximum number of warnings to print. 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   304
.TP 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   305
\-Xstdout filename 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   306
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
   307
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   308
\-Xprefer:{newer,source} 
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   309
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.  
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   310
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   311
\-Xpkginfo:{always,legacy,nonempty} 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   312
Specify handling of package\-info files 
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   313
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   314
\-Xprint 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   315
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
   316
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   317
\-XprintProcessorInfo 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   318
Print information about which annotations a processor is asked to process. 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   319
.TP 3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   320
\-XprintRounds 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   321
Print information about initial and subsequent annotation processing rounds. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   322
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   323
90ce3da70b43 Initial load
duke
parents:
diff changeset
   324
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   325
.SS 
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   326
Warnings That Can Be Enabled or Disabled with \-Xlint Option
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   327
.LP
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   328
.LP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   329
Enable warning \f2name\fP with the option \f3\-Xlint:\fP\f2name\fP, where \f2name\fP is one of the following warning names. Similarly, you can disable warning \f2name\fP with the option \f3\-Xlint:\-\fP\f2name\fP:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   330
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   331
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   332
.TP 3
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   333
cast 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   334
Warn about unnecessary and redundant casts. For example: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   335
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   336
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   337
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   338
String s = (String)"Hello!"
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   339
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   340
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   341
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   342
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   343
classfile 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   344
Warn about issues related to classfile contents. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   345
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   346
deprecation 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   347
Warn about use of deprecated items. For example: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   348
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   349
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   350
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   351
    java.util.Date myDate = new java.util.Date();
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   352
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   353
    int currentDay = myDate.getDay();
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   354
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   355
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   356
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   357
The method \f2java.util.Date.getDay\fP has been deprecated since JDK 1.1. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   358
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   359
dep\-ann 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   360
Warn about items that are documented with an \f2@deprecated\fP Javadoc comment, but do not have a \f2@Deprecated\fP annotation. For example: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   361
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   362
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   363
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   364
  /**
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   365
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   366
   * @deprecated As of Java SE 7, replaced by {@link #newMethod()}
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   367
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   368
   */
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   369
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   370
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   371
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   372
  public static void deprecatedMethood() { }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   373
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   374
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   375
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   376
  public static void newMethod() { }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   377
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   378
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   379
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   380
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   381
divzero 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   382
Warn about division by constant integer 0. For example: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   383
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   384
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   385
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   386
    int divideByZero = 42 / 0;
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   387
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   388
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   389
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   390
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   391
empty 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   392
Warn about empty statements after \f2if\fP statements. For example: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   393
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   394
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   395
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   396
class E {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   397
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   398
    void m() {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   399
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   400
        if (true) ;
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   401
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   402
    }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   403
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   404
}
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   405
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   406
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   407
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   408
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   409
fallthrough 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   410
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: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   411
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   412
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   413
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   414
switch (x) {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   415
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   416
case 1:
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   417
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   418
       System.out.println("1");
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   419
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   420
       //  No break statement here.
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   421
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   422
case 2:
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   423
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   424
       System.out.println("2");
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   425
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   426
}
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   427
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   428
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   429
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   430
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. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   431
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   432
finally 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   433
Warn about \f2finally\fP clauses that cannot complete normally. For example: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   434
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   435
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   436
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   437
  public static int m() {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   438
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   439
    try {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   440
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   441
      throw new NullPointerException();
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   442
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   443
    } catch (NullPointerException e) {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   444
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   445
      System.err.println("Caught NullPointerException.");
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   446
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   447
      return 1;
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   448
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   449
    } finally {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   450
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   451
      return 0;
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   452
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   453
    }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   454
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   455
  }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   456
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   457
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   458
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   459
The compiler generates a warning for \f2finally\fP block in this example. When this method is called, it returns a value of \f20\fP, not \f21\fP. A \f2finally\fP block always executes when the \f2try\fP block exits. In this example, if control is transferred to the \f2catch\fP, then the method exits. However, the \f2finally\fP block must be executed, so it is executed, even though control has already been transferred outside the method. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   460
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   461
options 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   462
Warn about issues relating to the use of command line options. See Cross\-Compilation Example for an example of this kind of warning. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   463
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   464
overrides 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   465
Warn about issues regarding method overrides. For example, consider the following two classes: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   466
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   467
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   468
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   469
public class ClassWithVarargsMethod {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   470
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   471
  void varargsMethod(String... s) { }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   472
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   473
}
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   474
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   475
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   476
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   477
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   478
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   479
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   480
public class ClassWithOverridingMethod extends ClassWithVarargsMethod {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   481
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   482
  @Override
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   483
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   484
  void varargsMethod(String[] s) { }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   485
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   486
}
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   487
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   488
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   489
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   490
The compiler generates a warning similar to the following:
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   491
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   492
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   493
\f2warning: [override] varargsMethod(String[]) in ClassWithOverridingMethod overrides varargsMethod(String...) in ClassWithVarargsMethod; overriding method is missing '...'\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   494
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   495
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   496
When the compiler encounters a varargs method, it translates the varargs formal parameter into an array. In the method \f2ClassWithVarargsMethod.varargsMethod\fP, the compiler translates the varargs formal parameter \f2String... s\fP to the formal parameter \f2String[] s\fP, an array, which matches the formal parameter of the method \f2ClassWithOverridingMethod.varargsMethod\fP. Consequently, this example compiles. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   497
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   498
path 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   499
Warn about invalid path elements and nonexistent path directories on the command line (with regards to the class path, the source path, and other paths). Such warnings cannot be suppressed with the \f2@SuppressWarnings\fP annotation. For example: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   500
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   501
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   502
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   503
javac \-Xlint:path \-classpath /nonexistentpath Example.java
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   504
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   505
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   506
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   507
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   508
processing 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   509
Warn about issues regarding annotation processing. The compiler generates this warning if you have a class that has an annotation, and you use an annotation processor that cannot handle that type of exception. For example, the following is a simple annotation processor:
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   510
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   511
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   512
\f3Source file \fP\f4AnnoProc.java\fP: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   513
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   514
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   515
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   516
import java.util.*;
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   517
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   518
import javax.annotation.processing.*;
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   519
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   520
import javax.lang.model.*;
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   521
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   522
import javax.lang.model.element.*;
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   523
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   524
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   525
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   526
@SupportedAnnotationTypes("NotAnno")
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   527
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   528
public class AnnoProc extends AbstractProcessor {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   529
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   530
    public boolean process(Set<? extends TypeElement> elems, RoundEnvironment renv) {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   531
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   532
        return true;
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   533
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   534
    }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   535
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   536
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   537
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   538
    public SourceVersion getSupportedSourceVersion() {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   539
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   540
        return SourceVersion.latest();
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   541
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   542
    }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   543
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   544
}
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   545
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   546
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   547
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   548
\f3Source file \fP\f4AnnosWithoutProcessors.java\fP\f3:\fP 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   549
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   550
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   551
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   552
@interface Anno { }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   553
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   554
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   555
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   556
@Anno
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   557
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   558
class AnnosWithoutProcessors { }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   559
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   560
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   561
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   562
The following commands compile the annotation processor \f2AnnoProc\fP, then run this annotation processor against the source file \f2AnnosWithoutProcessors.java\fP: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   563
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   564
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   565
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   566
% javac AnnoProc.java
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   567
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   568
% javac \-cp . \-Xlint:processing \-processor AnnoProc \-proc:only AnnosWithoutProcessors.java
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   569
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   570
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   571
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   572
When the compiler runs the annotation processor against the source file \f2AnnosWithoutProcessors.java\fP, it generates the following warning:
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   573
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   574
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   575
\f2warning: [processing] No processor claimed any of these annotations: Anno\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   576
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   577
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   578
To resolve this issue, you can rename the annotation defined and used in the class \f2AnnosWithoutProcessors\fP from \f2Anno\fP to \f2NotAnno\fP. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   579
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   580
rawtypes 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   581
Warn about unchecked operations on raw types. The following statement generates a \f2rawtypes\fP warning: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   582
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   583
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   584
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   585
void countElements(List l) { ... }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   586
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   587
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   588
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   589
The following does not generate a \f2rawtypes\fP warning: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   590
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   591
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   592
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   593
void countElements(List<?> l) { ... }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   594
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   595
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   596
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   597
\f2List\fP is a raw type. However, \f2List<?>\fP is a unbounded wildcard parameterized type. Because \f2List\fP is a parameterized interface, you should always specify its type argument. In this example, the \f2List\fP formal argument is specified with a unbounded wildcard (\f2?\fP) as its formal type parameter, which means that the \f2countElements\fP method can accept any instantiation of the \f2List\fP interface. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   598
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   599
serial 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   600
Warn about missing \f2serialVersionUID\fP definitions on serializable classes. For example: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   601
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   602
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   603
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   604
public class PersistentTime implements Serializable
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   605
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   606
{
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   607
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   608
  private Date time;
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   609
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   610
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   611
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   612
   public PersistentTime() {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   613
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   614
     time = Calendar.getInstance().getTime();
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   615
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   616
   }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   617
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   618
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   619
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   620
   public Date getTime() {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   621
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   622
     return time;
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   623
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   624
   }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   625
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   626
}
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   627
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   628
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   629
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   630
The compiler generates the following warning:
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   631
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   632
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   633
\f2warning: [serial] serializable class PersistentTime has no definition of serialVersionUID\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   634
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   635
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   636
If a serializable class does not explicitly declare a field named \f2serialVersionUID\fP, then the serialization runtime will calculate a default \f2serialVersionUID\fP value for that class based on various aspects of the class, as described in the Java Object Serialization Specification. However, it is strongly recommended that all serializable classes explicitly declare \f2serialVersionUID\fP values because the default process of computing \f2serialVersionUID\fP vales is highly sensitive to class details that may vary depending on compiler implementations, and can thus result in unexpected \f2InvalidClassExceptions\fP during deserialization. Therefore, to guarantee a consistent \f2serialVersionUID\fP value across different Java compiler implementations, a serializable class must declare an explicit \f2serialVersionUID\fP value. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   637
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   638
static 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   639
Warn about issues relating to use of statics. For example: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   640
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   641
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   642
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   643
class XLintStatic {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   644
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   645
    static void m1() { }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   646
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   647
    void m2() { this.m1(); }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   648
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   649
}
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   650
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   651
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   652
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   653
The compiler generates the following warning: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   654
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   655
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   656
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   657
warning: [static] static method should be qualified by type name, XLintStatic, instead of by an expression
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   658
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   659
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   660
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   661
To resolve this issue, you can call the static method \f2m1\fP as follows: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   662
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   663
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   664
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   665
XLintStatic.m1();
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   666
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   667
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   668
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   669
Alternatively, you can remove the \f2static\fP keyword from the declaration of the method \f2m1\fP. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   670
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   671
try 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   672
Warn about issues relating to use of \f2try\fP blocks, including try\-with\-resources statements. For example, a warning is generated for the following statement because the resource \f2ac\fP declared in the \f2try\fP statement is not used: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   673
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   674
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   675
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   676
try ( AutoCloseable ac = getResource() ) {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   677
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   678
    // do nothing
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   679
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   680
}
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   681
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   682
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   683
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   684
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   685
unchecked 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   686
Give more detail for unchecked conversion warnings that are mandated by the Java Language Specification. For example: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   687
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   688
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   689
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   690
    List l = new ArrayList<Number>();
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   691
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   692
    List<String> ls = l;       // unchecked warning
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   693
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   694
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   695
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   696
During type erasure, the types \f2ArrayList<Number>\fP and \f2List<String>\fP become \f2ArrayList\fP and \f2List\fP, respectively.
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   697
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   698
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   699
The variable \f2ls\fP has the parameterized type \f2List<String>\fP. When the \f2List\fP referenced by \f2l\fP is assigned to \f2ls\fP, the compiler generates an unchecked warning; the compiler is unable to determine at compile time, and moreover knows that the JVM will not be able to determine at runtime, if \f2l\fP refers to a \f2List<String>\fP type; it does not. Consequently, heap pollution occurs.
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   700
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   701
.br
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   702
In detail, a heap pollution situation occurs when the \f2List\fP object \f2l\fP, whose static type is \f2List<Number>\fP, is assigned to another \f2List\fP object, \f2ls\fP, that has a different static type, \f2List<String>\fP. However, the compiler still allows this assignment. It must allow this assignment to preserve backwards compatibility with versions of Java SE that do not support generics. Because of type erasure, \f2List<Number>\fP and \f2List<String>\fP both become \f2List\fP. Consequently, the compiler allows the assignment of the object \f2l\fP, which has a raw type of \f2List\fP, to the object \f2ls\fP. 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   703
.TP 3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   704
varargs 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   705
Warn about unsafe usages of variable arguments (varargs) methods, in particular, those that contain non\-reifiable arguments. For example: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   706
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   707
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   708
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   709
public class ArrayBuilder {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   710
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   711
  public static <T> void addToList (List<T> listArg, T... elements) {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   712
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   713
    for (T x : elements) {
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   714
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   715
      listArg.add(x);
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   716
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   717
    }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   718
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   719
  }
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   720
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   721
}
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   722
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   723
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   724
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   725
The compiler generates the following warning for the definition of the method \f2ArrayBuilder.addToList\fP: 
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   726
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   727
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   728
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   729
warning: [varargs] Possible heap pollution from parameterized vararg type T
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   730
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   731
\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   732
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   733
When the compiler encounters a varargs method, it translates the varargs formal parameter into an array. However, the Java programming language does not permit the creation of arrays of parameterized types. In the method \f2ArrayBuilder.addToList\fP, the compiler translates the varargs formal parameter \f2T... elements\fP to the formal parameter \f2T[] elements\fP, an array. However, because of type erasure, the compiler converts the varargs formal parameter to \f2Object[] elements\fP. Consequently, there is a possibility of heap pollution. 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   734
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
   735
90ce3da70b43 Initial load
duke
parents:
diff changeset
   736
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   737
.SH "COMMAND LINE ARGUMENT FILES"
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
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
   741
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   742
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   743
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
   744
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   745
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   746
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
   747
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   748
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   749
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
   750
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   751
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   752
Example \- Single Arg File
90ce3da70b43 Initial load
duke
parents:
diff changeset
   753
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   754
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   755
You could use a single argument file named "\f2argfile\fP" to hold all javac arguments:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   756
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   757
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   758
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   759
.fl
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   760
% \fP\f3javac @argfile\fP
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   761
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   762
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   763
90ce3da70b43 Initial load
duke
parents:
diff changeset
   764
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   765
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   766
This argument file could contain the contents of both files shown in the next example.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   767
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   768
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   769
Example \- Two Arg Files
90ce3da70b43 Initial load
duke
parents:
diff changeset
   770
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   771
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   772
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
   773
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   774
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   775
Create a file named "\f2options\fP" containing:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   776
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   777
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   778
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   779
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   780
     \-d classes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   781
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   782
     \-g
90ce3da70b43 Initial load
duke
parents:
diff changeset
   783
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   784
     \-sourcepath /java/pubs/ws/1.3/src/share/classes
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   785
.fl
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   786
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   787
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   788
\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   789
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   790
90ce3da70b43 Initial load
duke
parents:
diff changeset
   791
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   792
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   793
Create a file named "\f2classes\fP" containing:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   794
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   795
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   796
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   797
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   798
     MyClass1.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   799
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   800
     MyClass2.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   801
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   802
     MyClass3.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   803
.fl
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   804
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   805
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   806
\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   807
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   808
90ce3da70b43 Initial load
duke
parents:
diff changeset
   809
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   810
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   811
You would then run \f3javac\fP with:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   812
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   813
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   814
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   815
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   816
  % \fP\f3javac @options @classes\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   817
.fl
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   818
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   819
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   820
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   821
90ce3da70b43 Initial load
duke
parents:
diff changeset
   822
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   823
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   824
Example \- Arg Files with Paths
90ce3da70b43 Initial load
duke
parents:
diff changeset
   825
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   826
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   827
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
   828
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   829
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   830
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   831
.fl
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   832
% \fP\f3javac @path1/options @path2/classes\fP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   833
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   834
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   835
90ce3da70b43 Initial load
duke
parents:
diff changeset
   836
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   837
.SH "ANNOTATION PROCESSING"
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   838
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   839
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   840
\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
   841
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   842
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   843
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
   844
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   845
.SS 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   846
Overview of annotation processing
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   847
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   848
.LP
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   849
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 \f2META\-INF/services/javax.annotation.processing.Processor\fP 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.
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   850
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   851
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   852
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
   853
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   854
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   855
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
   856
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   857
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   858
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
   859
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   860
.SS 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   861
Implicitly loaded source files
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   862
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   863
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   864
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
   865
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   866
.SH "SEARCHING FOR TYPES"
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   867
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   868
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   869
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
   870
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   871
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   872
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
   873
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   874
.LP
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   875
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 Setting the Class Path).
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   876
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   877
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   878
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
   879
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   880
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   881
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
   882
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   883
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   884
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
   885
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   886
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   887
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
   888
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   889
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   890
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
   891
.LP
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   892
.SH "PROGRAMMATIC INTERFACE"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   893
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   894
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   895
\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
   896
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   897
.SS 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   898
Example
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   899
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   900
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   901
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
   902
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   903
.nf
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   904
\f3
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   905
.fl
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   906
JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   907
.fl
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   908
int rc = javac.run(null, null, null, args);
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   909
.fl
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   910
\fP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   911
.fi
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   912
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   913
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   914
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   915
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
   916
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   917
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   918
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
   919
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   920
.SS 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   921
Old Interface
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   922
.LP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   923
.LP
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
   924
\f3Note:\fP This API is retained for backwards compatibility only; all new code should use the Java Compiler API, described above.
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   925
.LP
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   926
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   927
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
   928
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   929
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   930
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   931
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   932
public static int compile(String[] args);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   933
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   934
public static int compile(String[] args, PrintWriter out);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   935
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   936
\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   937
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   938
90ce3da70b43 Initial load
duke
parents:
diff changeset
   939
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   940
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   941
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
   942
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   943
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   944
The \f2out\fP parameter indicates where the compiler's diagnostic output is directed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   945
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   946
.LP
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
   947
The return value is equivalent to the exit value from \f3javac\fP.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   948
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   949
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   950
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
   951
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   952
.SH "EXAMPLES"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   953
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   954
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   955
Compiling a Simple Program
90ce3da70b43 Initial load
duke
parents:
diff changeset
   956
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   957
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   958
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
   959
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   960
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
   961
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   962
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   963
% \fP\f3ls\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   964
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   965
greetings/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   966
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   967
% \f3ls greetings\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   968
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   969
Hello.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   970
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   971
% \f3cat greetings/Hello.java\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   972
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   973
package greetings;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   974
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   975
90ce3da70b43 Initial load
duke
parents:
diff changeset
   976
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   977
public class Hello {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   978
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   979
    public static void main(String[] args) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   980
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   981
        for (int i=0; i < args.length; i++) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   982
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   983
            System.out.println("Hello " + args[i]);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   984
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   985
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   986
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   987
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   988
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   989
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   990
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   991
% \f3javac greetings/Hello.java\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   992
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   993
% \f3ls greetings\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   994
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   995
Hello.class   Hello.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   996
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   997
% \f3java greetings.Hello World Universe Everyone\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
   998
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
   999
Hello World
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1000
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1001
Hello Universe
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1002
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1003
Hello Everyone
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1004
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1005
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1006
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1007
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1008
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1009
Compiling Multiple Source Files
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1010
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1011
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1012
This example compiles all the source files in the package \f2greetings\fP.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1013
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1014
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1015
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1016
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1017
% \fP\f3ls\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1018
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1019
greetings/
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1020
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1021
% \f3ls greetings\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1022
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1023
Aloha.java         GutenTag.java      Hello.java         Hi.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1024
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1025
% \f3javac greetings/*.java\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1026
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1027
% \f3ls greetings\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1028
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1029
Aloha.class         GutenTag.class      Hello.class         Hi.class
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1030
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1031
Aloha.java          GutenTag.java       Hello.java          Hi.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1032
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1033
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1034
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1035
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1036
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1037
Specifying a User Class Path
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1038
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1039
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1040
Having changed one of the source files in the previous example, we recompile it:
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1041
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1042
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1043
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1044
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1045
% \fP\f3pwd\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1046
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1047
/examples
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1048
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1049
% \f3javac greetings/Hi.java\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1050
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1051
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1052
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1053
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1054
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1055
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
  1056
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1057
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1058
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1059
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1060
% \fP\f3javac \-classpath /examples /examples/greetings/Hi.java\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1061
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1062
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1063
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1064
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1065
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1066
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
  1067
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1068
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1069
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1070
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1071
% \fP\f3javac \-classpath /examples:/lib/Banners.jar \\ 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1072
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1073
            /examples/greetings/Hi.java\fP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1074
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1075
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1076
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1077
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1078
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1079
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
  1080
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1081
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1082
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1083
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1084
% \fP\f3java \-classpath /examples:/lib/Banners.jar greetings.Hi\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1085
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1086
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1087
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1088
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1089
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1090
Separating Source Files and Class Files
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1091
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1092
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1093
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
  1094
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1095
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1096
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1097
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1098
% \fP\f3ls\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1099
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1100
classes/  lib/      src/
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1101
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1102
% \f3ls src\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1103
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1104
farewells/
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1105
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1106
% \f3ls src/farewells\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1107
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1108
Base.java      GoodBye.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1109
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1110
% \f3ls lib\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1111
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1112
Banners.jar
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1113
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1114
% \f3ls classes\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1115
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1116
% \f3javac \-sourcepath src \-classpath classes:lib/Banners.jar \\ 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1117
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1118
            src/farewells/GoodBye.java \-d classes\fP
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1119
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1120
% \f3ls classes\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1121
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1122
farewells/
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1123
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1124
% \f3ls classes/farewells\fP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1125
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1126
Base.class      GoodBye.class
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1127
.fl
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1128
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1129
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1130
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1131
.LP
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1132
\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.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1133
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1134
.SS 
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1135
Cross\-Compilation Example
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1136
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1137
.LP
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1138
Here we use \f3javac\fP to compile code that will run on a 1.6 VM.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1139
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1140
.nf
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1141
\f3
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1142
.fl
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1143
% \fP\f3javac \-source 1.6 \-target 1.6 \-bootclasspath jdk1.6.0/lib/rt.jar \\ 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1144
.fl
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1145
            \-extdirs "" OldCode.java\fP
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1146
.fl
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1147
.fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1148
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1149
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1150
.LP
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1151
The \f2\-source 1.6\fP option specifies that version 1.6 (or 6) of the Java programming language be used to compile \f2OldCode.java\fP. The option \f3\-target 1.6\fP option ensures that the generated class files will be compatible with 1.6 VMs. Note that in most cases, the value of the \f3\-target\fP option is the value of the \f3\-source\fP option; in this example, you can omit the \f3\-target\fP option.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1152
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1153
.LP
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1154
You must specify the \f3\-bootclasspath\fP option to specify the correct version of the bootstrap classes (the \f2rt.jar\fP library). If not, the compiler generates a warning:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1155
.LP
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1156
.nf
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1157
\f3
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1158
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1159
% \fP\f3javac \-source 1.6 OldCode.java\fP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1160
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1161
warning: [options] bootstrap class path not set in conjunction with \-source 1.6
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1162
.fl
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1163
.fi
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1164
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1165
.LP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1166
.LP
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1167
If you do not specify the correct version of bootstrap classes, the compiler will use the old language rules (in this example, it will use version 1.6 of the Java programming language) combined with the new bootstrap classes, which can result in class files that do not work on the older platform (in this case, Java SE 6) because reference to non\-existent methods can get included.
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1168
.LP
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1169
.SH "SEE ALSO"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1170
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1171
.RS 3
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1172
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1173
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1174
.na
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1175
\f2The javac Guide\fP @
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1176
.fi
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1177
http://download.oracle.com/javase/7/docs/technotes/guides/javac/index.html 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1178
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1179
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1180
java(1) \- the Java Application Launcher 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1181
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1182
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1183
jdb(1) \- Java Application Debugger 
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1184
.TP 2
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1185
o
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1186
javah(1) \- C Header and Stub File Generator 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1187
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1188
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1189
javap(1) \- Class File Disassembler 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1190
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1191
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1192
javadoc(1) \- API Documentation Generator 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1193
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1194
o
2692
345bc8d65b19 6837214: Update JDK7 man pages
tbell
parents: 2
diff changeset
  1195
jar(1) \- JAR Archive Tool 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1196
.TP 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1197
o
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1198
.na
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1199
\f2The Java Extensions Framework\fP @
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1200
.fi
9573
c02ff5a7c67b 7043684: Update man pages for JDK 7 tools
bpatel
parents: 5865
diff changeset
  1201
http://download.oracle.com/javase/7/docs/technotes/guides/extensions/index.html 
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1202
.RE
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1203
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1204
.LP
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1205