In this article we are going to elaborate the javac commands.

As we know the standard format of commands in java, the javac command also have the format(in command prompt).

What is javac?

Javac is java compiler cli commands. Javac reads definitions(classes/interfaces) written in the Java and compiles them into bytecode(class files).

When we use file name as input parameter(for list of class/interface/arguments) , we need to add @ before the file path.


javac (options) (sourcefiles/list of source files in a file) (arguments/argument files)
Example :
javac @path1\options @path2\classes 

Javac Options :

Javac shared most options from Java tool. Please see this to relate here

Standard Options :

  • classpath (class path Name):(or cp) Same as java tool
  • d directory : Same as java tool
  • verbose: Same as java tool
  • sourcepath (source path) : Specify the source code path(class/interface definitions)
  • deprecation : Shows description of each use or override of a deprecated member or class
  • encoding (encoding Name): Sets the source file encoding name
  • g : Generate all debugging information, including local variables
  • g:{keyword_list}: Generates filtered debugging information(comma separated)
    • source : Source file debugging information
    • lines: Line number debugging information
    • vars : Local variable debugging information
    • none : Does not generate any debugging information
  • nowarn : Disable warning messages
  • source (release) : Enables support for compiling source code with specific release
  • target (version): Generate class files that will work on VMs with the specified version
  • J(option) : Passes option to the java launcher by javac

Cross-Compilation Options :

  • target (version) : Generate class files that will work on VMs with the specified version
  • bootclasspath (boot class path) : Cross-compile against the specified set of boot classes
  • extdirs (directories) : Cross-compile against the specified extension directories

Non-Standard Options :

  • X : Display information about non-standard options(Same as java tool).
  • Xstdout (filen ame) : Send compiler messages to the named file
  • Xswitchcheck : Checks switch blocks for fall-through cases and provides a warning message for any that are found.

From CLI

  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath <path>          Specify where to find user class files and annotation processors
  -cp <path>                 Specify where to find user class files and annotation processors
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -proc:{none,only}          Control whether annotation processing and/or compilation is done.
  -processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process
  -processorpath <path>      Specify where to find annotation processors
  -parameters                Generate metadata for reflection on method parameters
  -d <directory>             Specify where to place generated class files
  -s <directory>             Specify where to place generated source files
  -h <directory>             Specify where to place generated native header files
  -implicit:{none,class}     Specify whether or not to generate class files for implicitly referenced files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release
  -target <release>          Generate class files for specific VM version
  -profile <profile>         Check that API used is available in the specified profile
  -version                   Version information
  -help                      Print a synopsis of standard options
  -Akey[=value]              Options to pass to annotation processors
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system
  -Werror                    Terminate compilation if warnings occur
  @<filename>                Read options and filenames from file