javac是一种用于编译Java应用程序或源代码的工具。javac读取类和接口定义并将它们编译成字节码类文件。这些类文件的扩展名为*.class。
语法
javac的使用语法对于一般的Linux工具来说有点复杂。
javac OPTIONS SOURCEFILES CLASSES ARGFILES
- 选项用于指定javac提供的命令行选项
- SOURCEFILES用于指定要编译的一个或多个源文件
- 类用于为注释(如YourPackage.YourClass)指定一个或多个要处理的类
- ARGFILES用于指定一个或多个包含选项和源文件的文件
显示Javac版本
Java开发工具包(JDK) 而Java运行时环境(JRE)可以有不同的版本,这也会影响javac的版本。如果我们想使用特定的Java编程语言版本,我们需要用 --version
.
$ javac --version

编译Java源代码
我们将从一个简单的javac示例开始,在这里我们将编译一个Java源代码文件。众所周知,Java源代码文件通常使用*.Java扩展名。我们只提供javac编译器的文件名,在本例中是my.java。
我们将使用以下示例HelloWorld.java源代码文件。我们将尝试用javac命令行工具编译这个Java源文件。
/*FileName : "HelloWorld.java" Example Application" */class HelloWorld { public static void main(String args[]) { System.out.println("Hello, World"); } }
下面我们将提供名为HelloWorld.java的java源文件,它将编译并创建名为 HelloWorld.class
. 正如你所看到的,新的扩展是 .class
这是一个编译过的Java类文件。
$ javac HelloWorld.java$ file HelloWorld.class
![图片[2]-如何用Javac工具编译Java源代码?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2019/02/poftut_img_5c74edce4bd4d.png)
编译多个Java文件
在前面的示例中,我们编译了一个Java文件。但是对于需要在一个命令中编译多个Java文件的大型项目来说,这是不够的。我们可以为javac指定多个Java文件,以便编译成字节码。我们将通过用空格分隔文件名来追加文件名。
$ javac HelloWorld.java HiWorld.java IAmHere.Java
编译所有Java文件
我们也可以编译指定目录中的所有java文件,我们将只使用星号和.java来指定当前目录中具有java扩展名的文件。
$ javac *.java
我们还可以指定与当前工作目录不同的目录。在本例中,我们将编译驻留在 /home/ismail/MyProject
.
$ javac /home/ismail/MyProject/*.java
以详细模式打印详细的编译日志
在编译过程中,我们可能需要打印库、操作警告等详细信息。我们可以使用 -verbose
选项,它将提供有关编译操作的详细调试信息。
$ javac -verbose HelloWorld.java

从文件中指定Java文件和选项
到目前为止,我们已经从交互式shell或命令行提供了Java文件和选项。如果有很多详细的文件名和选项,我们将在其中反复运行它们,我们可以使用文件来指定Java文件名和选项。我们将使用一个名为config的文件,它将为javac命令提供Java文件和javac选项。我们将在配置文件之前使用@sign。
相关文章: 如何使用带有命令行参数的Java命令从命令行运行Java应用程序?
下面是在前面的示例中使用的配置文件内容。
HelloWorld.java-verbose
我们将为这个配置文件提供 @
请在下面签名。请记住,对于此功能,我们可以使用与config不同的名称。
$ java @config

指定目标路径
将给定的Java文件编译成字节码后,新文件将存储在当前工作目录中。这些文件将与源文件同名,扩展名将为class。我们可以指定不同的输出或目标路径来放置创建的字节码或将要使用的二进制文件 -d
选项和目标路径。
$ javac -d /home/ismail/binary HelloWorld.java
指定类路径
如果我们需要提供编译源文件所需的类型,我们可以使用 -cp
选项并提供如下所示的类路径。如果未提供此选项,则将使用CLASSPATH环境变量。
$ javac -cp /bin/lib/MyProject HelloWorld.java
指定模块或库路径
我们也可以使用 -p
选项以指定模块位置。但是这个选项可以在Java9之后使用。
$ javac -p /bin/lib/MyProject HelloWorld.java