2017-05-05 179 views
0

我正在使用maven構建一個項目。源文件是UTF-8編碼的。我的pom.xml(相關片段)是這樣的:用maven UTF-8編碼的源文件編譯失敗

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <maven.compiler.target>1.8</maven.compiler.target> 
    <maven.compiler.source>1.8</maven.compiler.source> 
    <JAVA_1_8_HOME>C:\Program Files\Java\jdk1.8.0_121</JAVA_1_8_HOME> 
</properties> 

... 

    <plugins> 

     <!-- to compile not with default JAVA_HOME but custom path --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.5</version> 
      <configuration> 
       <verbose>true</verbose> 
       <fork>true</fork> 
       <executable>${JAVA_1_8_HOME}/bin/javac</executable> 
       <compilerVersion>1.3</compilerVersion> 
       <encoding>${project.build.sourceEncoding}</encoding> 
      </configuration> 
     </plugin> 
... 
    </plugins> 

現在我已經閱讀關於這個問題的許多文章/問題,但沒有建議工作。我試圖在maven-compiler-plugin上顯式設置編碼,但它仍然不起作用。我得到的錯誤是:

[ERROR] *my source file - name removed*.java:[523,182] error: unmappable character for encoding Cp1253 
[ERROR] *my source file - name removed*.java:[523,189] error: unmappable character for encoding Cp1253 

然而Maven的資源 - 插件不拿起project.build.sourceEncoding:

[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ XXXXXXXXXX --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 0 resource 
[INFO] 

我能得到這個項目編制的唯一辦法是設置JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8

我已經嘗試maven v3.3.9和3.5.0 - 沒有變化。

+1

有什麼' 1.3'和源編碼之間的關係?像1.3這樣的東西不允許使用'UTF-8'。我們可以有1.8嗎? –

+0

這個DID解決了我的問題。謝謝! –

回答

-2

Hiii ,, 我確實有過這樣的問題;添加到您的pom.xml文件,看看它是否工作:

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

或出現其他的方法是添加envirnoment變量稱爲JAVA_TOOL_OPTIONS, 將此變量設置爲:-Dfile.encoding = UTF8

更多JAVA_TOOL_OPTIONS:docs.oracle

+0

請仔細閱讀該問題。我已經嘗試了你的建議,但它不起作用。我已經說過,JAVA_TOOL_OPTIONS是我可以使其工作的唯一方式(但它在別處造成麻煩) –

+0

您是否嘗試將'project.build.sourceEncoding'屬性的值設置爲UTF-8?它應該工作。 – toongeorges

0

您配置在默認的Maven行爲(見https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html):

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     ... 
     <encoding>${project.build.sourceEncoding}</encoding> 
    </configuration> 
</plugin> 

你說你在你的pom.xml中將project.build.sourceEncoding設置爲UTF-8,但是錯誤消息說編碼是Cp1253。配置錯誤不在您發佈的代碼片段中。你能發佈你的pom.xml的更完整的版本嗎?


你要設置的值UTF-8無論是project.build.sourceEncoding財產或在下列2種方式之一encoding元素:

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

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 
+0

我看到你的原始pom.xml中有 UTF-8。我不知道爲什麼它不起作用 – toongeorges

+0

完整的pom.xml是100行。我可以在問題結尾處添加此問題的任何方式崩潰(像擾流板)? –

+0

試着找出cp1253編碼來自哪裏。我在我的筆記本電腦上用不同的編碼在本地嘗試了你的maven-compiler-plugin,並且如果設置了'project.build.sourceEncoding',它就會按預期工作。我認爲配置有問題,將此屬性的值更改爲cp1253。 – toongeorges