在linux系统下进行java程序开发时,编译java源代码需要使用jdk自带的javac命令,该命令可以将.java后缀的源文件编译为.class后缀的字节码文件,之后再通过java命令运行编译后的字节码文件即可执行程序。

基础单文件编译命令
如果只有一个java源文件需要编译,直接使用javac命令加上文件名即可,命令格式如下:
# 编译单个Test.java文件,编译成功后会生成Test.class文件 javac Test.java
编译完成后,使用java命令运行生成的字节码文件,注意运行时不需要加.class后缀:
# 运行Test.class字节码文件 java Test
多文件编译命令
当项目中有多个java源文件需要编译时,可以直接把所有文件名列在javac命令后面:
# 编译三个java源文件 javac A.java B.java C.java
如果文件数量较多,也可以使用通配符批量编译当前目录下所有的.java文件:
# 编译当前目录下所有.java后缀的文件 javac *.java
指定编译输出目录
默认情况下编译生成的.class文件会和源文件在同一个目录,如果需要指定输出目录,可以使用-d参数,目标目录需要提前存在:
# 创建编译输出目录 mkdir classes # 将编译后的class文件输出到classes目录下 javac -d classes Test.java
运行指定输出目录下的字节码文件时,需要通过-cp参数指定class文件的路径:
# 运行classes目录下的Test.class文件 java -cp classes Test
带包名的java文件编译
如果java源文件中定义了包名,比如以下代码:
package com.demo;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello Linux Java");
}
}
编译时同样使用-d参数指定输出目录,javac会自动按照包名结构生成对应的目录层级:
# 编译带包名的Hello.java,输出到classes目录 javac -d classes Hello.java
此时classes目录下会生成com/demo/Hello.class的路径结构,运行的时候需要带上完整的包名:
# 运行带包名的类 java -cp classes com.demo.Hello
常用编译参数说明
javac命令还有很多实用的参数,以下是几个常用的参数说明:
- -encoding:指定源文件的编码格式,比如
javac -encoding utf-8 Test.java,避免中文注释乱码问题 - -verbose:输出编译的详细过程信息,方便排查编译问题
- -source:指定源代码的java版本,比如
javac -source 1.8 Test.java - -target:指定生成的字节码兼容的java版本,比如
javac -target 1.8 Test.java
常见问题排查
如果执行javac命令时提示命令不存在,说明当前系统没有安装jdk或者jdk的环境变量没有配置正确,可以先通过以下命令检查jdk是否安装:
# 检查javac命令是否可用 javac -version
如果提示找不到命令,需要先安装对应版本的jdk并配置好JAVA_HOME和PATH环境变量,之后再执行编译命令即可。
java_compilelinux_commandjavacjava_run修改时间:2026-07-19 01:03:19