安装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
相关产品推荐
相关产品推荐

