In this Java tools tutorial, you will learn how to use the Java compiler via the javac command to compile Java source files (.java) into bytecode files (.class).

Table of content:

    1. Compile a single Java source file
    2. Compile multiple Java source files
    3. Compile a Java source file which has dependencies
    4. Specify destination directory
    5. Specify source path directory
    6. Specify Java source compatibility version
    7. Specify target VM version
    8. Silent compilation and verbosity
You know, the Java Development Kit (JDK) provides javac which is the Java compiler program. It compiles Java source files (.java) into bytecode class files (.class). The tool is located under JDK_HOME\bin directory. So make sure you included this directory in the PATH environment variable so it can be accessed anywhere in command line prompt.

This tutorial summarizes common practices for compiling Java source files from command line. All the commands below are supposing the current working directory is where the source files are placed. Syntax of this command is:

javac [options] [source files]

Type javac -help to view compiler options, and type javac -version to know current version of the compiler. By default, the generated .class files are placed under the same directory as the source files.

 

1. Compile a single Java source file

javac HelloWorld.java 
 

2. Compile multiple Java source files

javac *.java 
 

3. Compile a Java source file which has dependencies

It’s very common that a Java program depends on one or more external libraries (jar files). Use the flag -classpath(or -cp) to tell the compiler where to look for external libraries (by default, the compiler is looking in bootstrap classpath and in CLASSPATH environment variable).

 

4. Specify destination directory

Use the -d directoryoption to specify where the compiler puts the generated .class files. For example:

javac -d classes MyProgram.java
 

NOTES:

 

5. Specify source path directory

We can tell the compiler where to search for the source files by using the -sourcepath directoryoption. For example:

javac -sourcepath src MyProgram.java
 

That will compile the MyProgram.java file in the src directory.

 

6. Specify Java source compatibility version

We can tell the compiler which Java version applied for the source file, by using the -source release option. For example:

javac -source 1.5 MyProgram.java
 

That will tell the compiler using specific language features in Java 1.5 to compile the source file. The valid versions are: 1.3, 1.4, 1.5 (or 5), 1.6 (or 6) and 1.7 (or 7).

 

7. Specify target VM version

The compiler can generate the .class files for a specific Java virtual machine (VM) version. Using the -target release option we can do this, for example: 

javac -target 1.6 -source 1.5 MyProgram.java
 

The target VM version must be greater than or equal the source version, that’s why we specify both the options -target and -source here.

By default, the target VM version is the version of the compiler.

 

8. Silent compilation and verbosity

The compiler can compile source files which are related to the specified one, and it does that silently. So using the -verbose option can tell us what the compiler is doing:

javac -verbose MyProgram.java

Other Java Tools Tutorials:


About the Author:

is certified Java programmer (SCJP and SCWCD). He started programming with Java in the time of Java 1.4 and has been falling in love with Java since then. Make friend with him on Facebook and watch his Java videos you YouTube.