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:
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.
javac HelloWorld.java
javac Program1.java Program2.java Program3.java
javac Swing*.java
javac *.java
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).
javac -classpath mail.jar EmailSender.java
Or:
javac -cp mail.jar EmailSender.java
javac -cp lib1.jar;lib2.jar;lib3.jar MyProgram.java
Or we can use the wildcard character *:
javac -cp *; MyProgram.java
That will instruct the compiler to look for all available libraries in the same directory as the source file.
Use the -d directoryoption to specify where the compiler puts the generated .class files. For example:
javac -d classes MyProgram.java
NOTES:
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.
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).
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.
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: