You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenRewrite迁移Java8至Java11时遇字符集错误求助

使用OpenRewrite迁移Java8到Java11时编码报错的解决方法

在多模块Maven项目中采用ISO-8859-1编码,按照官方指南配置OpenRewrite插件执行Java8到Java11迁移时,执行Maven目标出现终止报错:

The contents of a quark are unknown, so the charset is unknown.

问题原因

这个报错核心是OpenRewrite未正确识别项目的文件编码,当项目使用非UTF-8编码(比如ISO-8859-1)时,处理文件容易触发字符集解析异常。

解决办法

  • 方法1:在OpenRewrite插件中直接指定编码
    修改父POM里的插件配置,添加<encoding>参数明确指定项目编码:
<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.openrewrite.maven</groupId>
        <artifactId>rewrite-maven-plugin</artifactId>
        <version>4.41.0</version>
        <configuration>
          <activeRecipes>
            <recipe>org.openrewrite.java.migrate.Java8toJava11</recipe>
          </activeRecipes>
          <!-- 明确指定项目编码为ISO-8859-1 -->
          <encoding>ISO-8859-1</encoding>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.openrewrite.recipe</groupId>
            <artifactId>rewrite-migrate-java</artifactId>
            <version>1.17.1</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</project>
  • 方法2:在父POM全局配置编码
    如果多模块项目编码统一,可在父POM的<properties>中添加全局编码设置,让所有Maven插件(包括OpenRewrite)都遵循该编码:
<properties>
  <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
  <project.reporting.outputEncoding>ISO-8859-1</project.reporting.outputEncoding>
</properties>
  • 方法3:跳过无法识别的特殊文件
    如果项目里有二进制文件、非标准文本文件这类无法识别编码的文件,可以在插件配置中添加排除规则跳过它们:
<configuration>
  <activeRecipes>
    <recipe>org.openrewrite.java.migrate.Java8toJava11</recipe>
  </activeRecipes>
  <encoding>ISO-8859-1</encoding>
  <excludes>
    <exclude>**/*.bin</exclude>
    <exclude>**/特殊格式文件.txt</exclude>
  </excludes>
</configuration>

验证

修改配置后,重新执行OpenRewrite的Maven目标(比如mvn rewrite:run),确认报错消失,迁移流程正常执行。

内容的提问来源于stack exchange,提问作者Marco Fantasia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:32:14