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

 更新时间:2020年03月22日 11:40:55   作者:架构文摘  
这篇文章主要介绍了Maven发布Jar包中文乱码解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Maven deploy 乱码

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

{
 "code": "SUCCESS",
 "success": true,
 "message": "鎿嶄綔鎴愬姛",
 "data": [
  {
   "key": "app_force_login",
   "value": "false"
  }
 ]
}

之前一直在用的mac开发,一直也没碰到过这样的问题。后来换了家里的 Windows 台式机代码拉下来后,使用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

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

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, message, 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

  <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>8</source>
          <target>8</target>
          <encoding>utf-8</encoding>
        </configuration>
      </plugin>

总结

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

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

相关文章

  • 详解SpringMVC 自动封装枚举类的方法

    详解SpringMVC 自动封装枚举类的方法

    springmvc默认无法自动封装枚举类,本篇文章主要介绍了详解SpringMVC 自动封装枚举类的方法,有兴趣的可以了解一下。
    2017-04-04
  • JVM入门之类加载与字节码技术(类加载与类的加载器)

    JVM入门之类加载与字节码技术(类加载与类的加载器)

    Java字节码增强指的是在Java字节码生成之后,对其进行修改,增强其功能,这种方式相当于对应用程序的二进制文件进行修改。Java字节码增强主要是为了减少冗余代码,提高性能等
    2021-06-06
  • java 遍历request中的所有表单数据的实例代码

    java 遍历request中的所有表单数据的实例代码

    下面小编就为大家带来一篇java 遍历request中的所有表单数据的实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • Spring实战之容器后处理器操作示例

    Spring实战之容器后处理器操作示例

    这篇文章主要介绍了Spring实战之容器后处理器操作,结合实例形式分析了spring容器后处理器配置、使用操作技巧与相关注意事项,需要的朋友可以参考下
    2019-12-12
  • 浅谈Java解释器模式

    浅谈Java解释器模式

    这篇文章主要介绍了Java基于解释器模式实现定义一种简单的语言功能,简单描述了解释器模式的概念、功能及Java使用解释器模式定义一种简单语言的相关实现与使用技巧,需要的朋友可以参考下
    2021-10-10
  • Java中的五种引用类型详解

    Java中的五种引用类型详解

    Java中的五种引用类型:强引用、软引用、弱引用、虚引用和Final引用,分别用于管理对象的生命周期,帮助垃圾回收器更高效地回收不再使用的对象
    2024-12-12
  • Shiro+Cas微服务化及前后端完全分离

    Shiro+Cas微服务化及前后端完全分离

    这篇文章主要为大家详细介绍了Shiro+Cas微服务化及前后端完全分离,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • Spring Boot分段处理List集合多线程批量插入数据的解决方案

    Spring Boot分段处理List集合多线程批量插入数据的解决方案

    大数据量的List集合,需要把List集合中的数据批量插入数据库中,本文给大家介绍Spring Boot分段处理List集合多线程批量插入数据的解决方案,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • Java值得使用Lambda的8个场景合集

    Java值得使用Lambda的8个场景合集

    可能对不少人来说,Lambda显得陌生又复杂,觉得Lambda会导致代码可读性下降,但毕竟2023年了,JDK都出了那么多新版本,是时候试试Lambda了
    2023-08-08
  • Java多线程和并发基础面试题(问答形式)

    Java多线程和并发基础面试题(问答形式)

    多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,感兴趣的小伙伴们可以参考一下
    2016-06-06

最新评论