IDEA 编译 Maven 项目报 Malformed \uxxxx encoding

IDEA 编译 Maven 项目报 Malformed \uxxxx encoding

适用范围

  • IDEA 中执行 Maven compile/package 报 Malformed \uxxxx encoding,但命令行 mvn compile 正常
  • 适用于所有 Maven 项目,不限于特定项目

需要确认的信息

信息 获取方式
IDEA 配置的 Maven 本地仓库路径 IDEA → Settings → Build → Maven → Local repository
命令行 Maven 使用的本地仓库路径 mvn help:effective-settings 查看 <localRepository>
完整错误信息 IDEA Maven 构建输出窗口

排查流程概览

正常
也报错
不同
相同


IDEA 编译报 Malformed uxxxx encoding
命令行 mvn compile 正常吗?
对比两边的本地仓库路径
扫描唯一仓库中的 .properties 文件
路径是否相同?
扫描 IDEA 使用的仓库中的 .properties 文件
检查 IDEA 传递的 JVM 参数是否包含 Windows 反斜杠路径
找到损坏文件?
删除损坏文件
用 mvn -X 开启 debug 日志定位具体文件
重新编译验证
修正 JVM 参数中的路径分隔符

执行约束

  • 删除的是 Maven 仓库中的缓存文件(resolver-status.properties),Maven 会自动重新下载,无风险
  • 不要删除整个 .m2/repository 或仓库根目录

排查步骤

Step 1:确认 IDEA 与命令行使用的本地仓库是否一致

目标:定位为什么 IDEA 报错但命令行不报错

操作

  1. 查看 IDEA 的 Maven 配置:

    IDEA → File → Settings → Build, Execution, Deployment → Build Tools → Maven

    记录 Local repositoryUser settings file 两个路径

  2. 命令行查看实际生效的本地仓库:

    bash 复制代码
    mvn help:effective-settings | findstr localRepository
  3. 也可以查看 IDEA workspace 配置确认:

    复制代码
    .idea/workspace.xml 中搜索 MavenGeneralSettings

判定

  • 路径不同 → 两边读的仓库不一样,问题文件在 IDEA 使用的那个仓库中,进入 Step 2
  • 路径相同 → 进入 Step 3 检查 JVM 参数

Step 2:扫描仓库中损坏的 .properties 文件

目标 :找到包含畸形 \uxxxx 编码的 .properties 文件

操作

使用 PowerShell 扫描(将 D:\repository 替换为实际路径):

powershell 复制代码
$files = Get-ChildItem -Path "D:\repository" -Filter "*.properties" -Recurse -ErrorAction SilentlyContinue
foreach ($f in $files) {
    try {
        $content = [System.IO.File]::ReadAllText($f.FullName)
        if ($content -match '\\u([^0-9a-fA-F]|[0-9a-fA-F]{0,3}([^0-9a-fA-F]|$))') {
            Write-Host "FOUND: $($f.FullName)"
        }
    } catch {}
}

判定

  • 找到文件 → 打开确认是否有 `` 空字节或其他损坏内容,进入 Step 4
  • 未找到 → 进入 Step 3

Step 3:检查 IDEA Maven Runner 的 JVM 参数

目标:排除 IDEA 传递给 Maven 的参数中包含未转义的 Windows 路径

操作

  1. IDEA → Settings → Build → Maven → Runner → VM Options
  2. 检查是否有类似 -Dxxx=C:\Users\someone 的参数,其中 \u 会被 Java 当作 Unicode 转义

判定

  • \u 开头的路径片段 → 改为正斜杠 / 或双反斜杠 \\
  • 无异常 → 用 mvn -X compile 开启 debug 日志,从堆栈中定位具体读取了哪个文件

Step 4:删除损坏文件并重新编译

目标:修复问题

操作

powershell 复制代码
Remove-Item -Path "<损坏文件路径>" -Force

或删除整个依赖目录让 Maven 重新下载:

powershell 复制代码
Remove-Item -Path "<仓库路径>\com\nimbusds\lang-tag" -Recurse -Force

然后在 IDEA 中重新编译验证。

归因

原因 1:仓库缓存文件损坏(最常见)

Maven 的 resolver-status.properties 文件在写入过程中被中断(断电、强杀进程、磁盘异常),导致文件中出现大量 `` 空字节。java.util.Properties.load() 解析时遇到不合法的 \uxxxx 序列直接抛异常。

特征:打开文件可以看到大量 null 字节或乱码。

原因 2:IDEA 与命令行使用不同的本地仓库

IDEA 的 Maven 设置中 Local repository 可能指向一个不同于 ~/.m2/repository 的路径。命令行正常只是因为它读的仓库恰好没有损坏文件。

原因 3:JVM 参数中的 Windows 路径

IDEA Maven Runner 的 VM Options 中如果包含 -Dpath=C:\Users\xxx\u\t 等会被解释为转义字符。

实际案例

时间:2026-05-13

现象 :IDEA 编译 camera-download-service 报 Malformed \uxxxx encoding,命令行 mvn compile 正常

排查过程

  1. 项目内 .properties 文件均正常,无畸形 Unicode
  2. 发现 IDEA 配置的本地仓库为 D:\repository,命令行用的是 C:\Users\zhaifeiyu1\.m2\repository
  3. 扫描 D:\repository 下所有 .properties 文件,发现 D:\repository\com\nimbusds\lang-tag\resolver-status.properties 文件第 7 行包含大量 `` 空字节(文件损坏)
  4. 删除该文件后重新编译,问题解决

输出结论

维度 结论
根因 Maven 本地仓库中的 resolver-status.properties 文件写入中断导致损坏
为什么只在 IDEA 中复现 IDEA 和命令行使用了不同的本地仓库路径
修复方式 删除损坏的 .properties 文件,Maven 会自动重建
预防建议 统一 IDEA 与命令行的本地仓库路径,避免维护两份缓存

最后更新:2026-05-13

相关推荐
此生决int2 小时前
C++快速上手java备战期末考——初识java
java·c++·期末复习
Jing_jing_X2 小时前
通义灵码Lingma IDE:解决你的提示词焦虑
java·ide·ai
ch.ju2 小时前
Java Programming Chapter 3——Dynamic acquisition of array
java·开发语言
XS0301062 小时前
Java Web实现简易CRUD操作笔记
java·前端·笔记
夕除2 小时前
spring boot 4
java·spring boot·后端
三产2 小时前
Hermes 教程 03:Skills 系统
android·java·数据库
starsky762382 小时前
spring boot——前后端分离
java·spring boot·后端
jiayong232 小时前
IDEA 中进行分支双向同步操作指南
java·ide·intellij-idea
AI玫瑰助手2 小时前
Python流程控制:for循环遍历字符串列表字典
android·java·python