1. 程式人生 > 程式設計 >Maven釋出Jar包中文亂碼解決方法

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 試下:

Maven釋出Jar包中文亂碼解決方法

重新執行:

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,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包中文亂碼的資料請關注我們其它相關文章!