核心是让maven编译时用utf-8读源码,需在pom.xml中配置maven-compiler-plugin的utf-8、设置utf-8属性,并确保.java文件为无bom的utf-8编码。

核心是让 Maven 编译时用 UTF-8 读源码,而不是默认的 GBK。中文 Windows 系统命令行默认编码是 GBK(代码页 936),而你的 Java 文件大概率是 UTF-8 编码(含中文注释、字符串等),两者不匹配就报这个错。
在 pom.xml 中配置编译插件编码
这是最常用、最可靠的解决方式,作用于整个 Maven 构建过程。
- 在
<build><plugins></plugins></build>下添加或修改maven-compiler-plugin,明确指定<encoding>UTF-8</encoding> - 同时建议补全
<source></source>和<target></target>,避免隐式版本问题 - 示例配置:
声明项目级默认编码属性
补充设置全局编码属性,影响资源拷贝、报告生成等环节,和上一步配合使用更稳妥。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 在
<properties></properties>节点中添加:<project.build.sourceencoding>UTF-8</project.build.sourceencoding> - 这个属性会被多数 Maven 插件自动识别,比如
maven-resources-plugin也依赖它 - 无需额外插件配置,一行即可生效
检查并统一文件实际编码
配置只是告诉 Maven “怎么读”,前提是你的 .java 文件确实是 UTF-8 编码。
- 用编辑器(如 VS Code、IntelliJ、Notepad++)打开源文件,确认右下角显示的是 “UTF-8”(不是 “UTF-8 with BOM”)
- BOM(字节顺序标记)在 Java 编译中容易引发干扰,务必选择无 BOM 的 UTF-8
- 如果当前是 GBK 或其他编码,需另存为无 BOM 的 UTF-8 格式
临时验证:命令行加参数编译
适合快速测试或 CI 调试,不推荐长期替代 pom 配置。
- 执行
mvn compile -Dfile.encoding=UTF-8 - 该参数会覆盖系统默认编码,但只对本次命令有效
- 若此方式成功,说明问题确实在编码不一致,可放心推进 pom 修改
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










