温馨提示×

CentOS编译Java如何指定编码

小樊
34
2026-08-04 18:19:32
栏目: 编程语言

在 CentOS 上编译 Java 时指定编码,核心就是给 javac 加上 -encoding 参数。下面按常见场景说明。


一、命令行直接编译(最常用)

1️⃣ 指定 UTF-8 编码

javac -encoding UTF-8 Hello.java

2️⃣ 指定 GBK(老项目常见)

javac -encoding GBK Hello.java

这是最关键的一点

javac 默认使用 系统编码,CentOS 中文环境可能是 GBK,容易导致乱码,一定要显式指定 -encoding


二、编译多个 Java 文件

javac -encoding UTF-8 *.java

或指定目录:

javac -encoding UTF-8 -d out src/*.java

三、使用 javac -D 或环境变量(不推荐)

⚠️ 注意
javac -Dfile.encoding=UTF-8 不会生效,这是 JVM 参数,不是编译器参数。

✅ 正确方式仍然是:

javac -encoding UTF-8

四、Maven 项目(CentOS 上很常见)

1️⃣ 在 pom.xml 中指定编码(强烈推荐)

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>

或:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.11.0</version>
    <configuration>
        <encoding>UTF-8</encoding>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

然后:

mvn clean package

五、Gradle 项目

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

六、CentOS 系统编码检查(排查问题)

查看当前系统编码

locale

临时设置 UTF-8(当前 shell)

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

永久设置(推荐)

编辑:

vi /etc/locale.conf

内容:

LANG=en_US.UTF-8

然后:

source /etc/locale.conf

七、常见错误示例

❌ 错误:

javac Hello.java

如果源码是 UTF-8,但系统是 GBK,会乱码。

✅ 正确:

javac -encoding UTF-8 Hello.java

总结一句话 ✅

CentOS 编译 Java 指定编码,统一用:javac -encoding UTF-8;Maven/Gradle 项目在构建工具中配置。

如果你愿意,可以把你的 Java 版本 / Maven / 编译报错信息贴出来,我可以帮你精准定位。

0