Maven发布Jar包中文乱码解决方法

网友投稿 373 2022-12-11


Maven发布Jar包中文乱码解决方法

Maven deploy 乱码

今天使用Maven发布Jar包时,发布功能都是正常的也成功上传到了仓库,就是项目跑越来后出中文中现了乱码:

{

"code": "SUCCESS",

"success": true,

"message": "http://鎿嶄綔鎴愬姛",

"data": [

{

"key": "app_force_login",

"value": "false"

}

]

}

之前一直在用的mac开发,一直也没碰到过这样的问题。后来换了家里的 taUFfWindows 台式机代码拉下来后,使用maven deploy发布了一次common的Jar包,然后所有common包中的中文都乱码了,一开始还以为是服务器环境的问题,后来发现在执行maven deploy时输出了一些警告:

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/convert/ObjectConvert.java:[10,5] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/convert/ObjectConvert.java:[10,13] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/convert/ObjectConvert.java:[10,24] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/convert/ObjectConvert.java:[18,9] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/convert/ObjectConvert.java:[18,17] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/convert/ObjectConvert.java:[25,9] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/result/Result.java:[10,8] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/result/Result.java:[10,28] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/result/ResultCode.java:[23,15] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/result/ResultCode.java:[25,74] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/result/ResultCode.java:[49,12] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/result/ResultCode.java:[49,14] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/result/ResultCode.java:[60,12] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/result/ResultCode.java:[60,14] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/exception/BizRuntimeException.java:[7,11] 编码GBK的不可映射字符

[WARNING] /C:/Users/yjwfn/Desktop/csbaic-common/src/main/java/com/csbaic/common/exception/BizRuntimeException.java:[14,12] 编码GBK的不可映射字符

打开源码一看又是正常的中文

修改 Idea 的编码

首先看了一下 Idea的文件编码是不是 UTF-8,发现在 Windows 环境下项目中的编码是继承系统的 GBK ,全部修改成 UTF-8 试下:

重新执行:

mvn clean deploy -DskipTests

还是样的出现乱码警告!!然后查看对应类ResultCode的class文件发现里面也是乱码的:

public interface ResultCode {

ResultCode SUCCESS = new DefaultResultCode("SUCCESS", "鎿嶄綔鎴愬姛", true);

ResultCode ERROR = new DefaultResultCode("ERROR", "鎿嶄綔澶辫触", false);

ResultCode BAD_REQUEST = new DefaultResultCode("BAD_REQUEST", "璇锋眰閿欒\ue1e4", false);

ResultCode NOT_FOUND = new DefaultResultCode("NOT_FOUND", "璇锋眰鏁版嵁鏈\ue045壘鍒�", false);

String getCode();

String getMessage();

Boolean isSuccess();

static ResultCode error(String code, String message) {

return new DefaultResultCode(code, message, false);

}

static ResultCode ok(String code, String message) {

return new DefaultResultCode(code, mestaUFfsage, true);

}

}

猜想可能是某种字符编码对应不上。

修改 Maven 编译插件编码

修改文件/idea的编码后,还是一样乱码。我仔细查看了下mvn发布日志发现了些有用的信息:

[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!

大概意思就是没有设置文件编码,使用系统默认的编码 GBK,根据指示找到项目的pom.xml将插件的编码改为utf-8:

org.apache.maven.plugins

maven-compiler-plugin

8

8

utf-8

总结

问题的产生是由于公司平台用的Mac电脑并且系统使用的字符集是UTF-8,切换到Windows后由于默认的字符集是GBK,而且没有指定maven-compiler-plugin插件的编码,导致编译出来的字节码文件中的中文乱码了。

以上就是Maven发布Jar包中文乱码解决方法的详细内容,更多关于Maven发布Jar包中文乱码的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringCloud消息总线Bus配置中心实现过程解析
下一篇:简单了解JAVA SimpleDateFormat yyyy和YYYY的区别
相关文章

 发表评论

暂时没有评论,来抢沙发吧~