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

安装web3j时遇编码不可映射错误,如何强制Gradle使用UTF-8?

解决Gradle强制使用UTF-8编码编译web3j源码的问题

这个问题我之前碰到过,核心就是Gradle默认继承了操作系统的编码(你的情况是Cp1250),但web3j源码里的注释包含UTF-8特殊字符,导致javadoc任务解析失败。下面给你几个可行的解决方案:

方案一:全局配置项目编码(推荐)

在项目根目录的build.gradle文件中添加全局编码配置,让所有子项目的编译、测试、javadoc等任务都统一使用UTF-8:

allprojects {
    tasks.withType(JavaCompile) {
        options.encoding = 'UTF-8'
    }
    tasks.withType(Javadoc) {
        options.encoding = 'UTF-8'
    }
    tasks.withType(Test) {
        systemProperty 'file.encoding', 'UTF-8'
    }
}

这样配置后,不管是编译Java代码还是生成javadoc,都会强制采用UTF-8编码,从根源解决字符解析的问题。

方案二:命令行临时指定编码

如果不想修改项目配置,可以在执行gradlew命令时直接添加编码参数,临时让本次运行使用UTF-8:

gradlew install -Dfile.encoding=UTF-8

这个方式适合临时测试,或者不想改动项目文件的场景,仅对当前命令执行生效。

方案三:通过gradle.properties永久全局配置

在用户目录下的.gradle/gradle.properties(或者项目根目录的gradle.properties)中添加以下配置,让所有Gradle项目默认使用UTF-8编码:

systemProp.file.encoding=UTF-8

这种方式是全局生效的,以后不管运行哪个Gradle项目,都会默认采用UTF-8编码,属于一劳永逸的配置方式。

验证解决效果

配置完成后,重新执行gradlew install,如果之前的unmappable character错误消失,就说明编码配置已经生效了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:40:55