Maven打包編譯錯誤工作區間設置編碼格式gbk可以utf-8不可以


轉自:https://blog.csdn.net/wolf_love666/article/details/52593483

問題:Maven打包編譯錯誤工作區間設置編碼格式gbk可以utf-8不可以 
錯誤如下: 
[INFO] ———————————————————————— 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project ins-service: Compilation failure 
[ERROR] javac: �Ҳ����ļ�: E:\SVN3\20160918JunKang_Dev\JKDS\05源代�?后端\v1.0\parent\ins-service\src\main\java\com\junk\enums\FileUploadEnum.java 
[ERROR] �÷�: javac 
[ERROR] -help �����г����ܵ�ѡ�� 
[ERROR] -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException 
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command 
[ERROR] mvn -rf :ins-service 
解決辦法: 
根據出現的亂碼發現應該推測到格式編碼問題,所以驗證下,改工作區間編碼格式為gbk呀呀,竟然好了。再改會utf-8格式呀呀又出錯了,很奇怪,推測問題是兩種: 
一種是原來的gbk現在utf-8但是很明顯問題不對路,但是還是提供一種解決方式將gbk代碼改成utf-8代碼 
代碼如下:

package org.xc.binny;

import java.io.File;
import java.util.Collection;

import org.apache.commons.io.FileUtils;

public class GBK2UTF8App { /** * 將制定目錄下的所有Java源文件的編碼格式從GBK修改為UTF-8 */ public static void main(String[] args) throws Exception { //GBK編碼格式源碼路徑 String srcDirPath = "C:\\Users\\Wolf\\Desktop\\src"; // //轉為UTF-8編碼格式源碼路徑E:\SVN3\20160918JunKang_Dev\JKDS\05源代碼\后端\v1.0\parent\ins-service\src\main\java\com\junk String utf8DirPath = "C:\\Users\\Wolf\\Desktop\\src"; // String srcDirPath = "E:\\SVN3\\20160918JunKang_Dev\\JKDS\\05源代碼\\后端\\v1.0\\parent\\ins-common\\src\\main\\java\\com\\common"; // //轉為UTF-8編碼格式源碼路徑E:\SVN3\20160918JunKang_Dev\JKDS\05源代碼\后端\v1.0\parent\ins-service\src\main\java\com\junk // String utf8DirPath = "E:\\SVN3\\20160918JunKang_Dev\\JKDS\\05源代碼\\后端\\v1.0\\parent\\ins-common\\src\\main\\java\\com\\common"; // //獲取所有java文件 Collection<File> javaGbkFileCol = FileUtils.listFiles(new File(srcDirPath), new String[]{"java"}, true); int count=0; for (File javaGbkFile : javaGbkFileCol) { //UTF8格式文件路徑 String utf8FilePath = utf8DirPath+javaGbkFile.getAbsolutePath().substring(srcDirPath.length()); //使用GBK讀取數據,然后用UTF-8寫入數據 // FileUtils.writeLines(new File(utf8FilePath), "UTF-8", FileUtils.readLines(javaGbkFile, "GBK")); FileUtils.writeLines(new File(utf8FilePath), "UTF-8", FileUtils.readLines(javaGbkFile, "GBK")); count++; System.out.println("執行文件次數"+count); } } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

jar包:commons-io-1.4.jar 
第二種是maven編譯的問題: 
搜羅pom文件關於編譯的問題原來: 
maven中的plugins 和 pluginManagement、dependencies和dependencyManagement。這兩個后者都需要放置在父文件里面,前者在子文件里。他們區別是: 
maven會在當前項目中加載plugins聲明的插件;

pluginManagement是表示插件聲明,即你在項目中的pluginManagement下聲明了插件,maven不會加載該插件,pluginManagement聲明可以被繼承。

pluginManagement的一個使用案例是當有父子項目的時候,父項目中可以利用pluginManagement聲明子項目中需要用到的插件, 之后,當某個或者某幾個子項目需要加載該插件的時候,就可以在子項目中plugins節點只配置 groupId 和 artifactId就可以完成插 件的引用。 
pluginManagement主要是為了統一管理插件,確保所有子項目使用的插件版本保持一致。 
哈哈問題找到了那么改一下吧: 
將 
<pluginManagement> 
<plugins> 
<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-compiler-plugin</artifactId> 
<configuration> 
<source>1.6</source> 
<target>1.6</target> 
<encoding>utf-8</encoding> 
</configuration> 
</plugin> 
...... 
</plugins> 
<pluginManagement> 
改成: 
<build> 
<plugins> 
<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-compiler-plugin</artifactId> 
<configuration> 
<source>1.6</source> 
<target>1.6</target> 
<encoding>utf-8</encoding> 
</configuration> 
</plugin> 
...... 
</plugins> 
<build>
 
那么原因到底是什么呢為啥呢gbk可以通過,utf-8不可以呢 
由於系統默認編碼是GBK,因此默認可以gbk通過編譯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM