2013-10-21 88 views
5

我有一個Maven的項目,該項目是使用以下屬性配置:Maven項目源編碼不起作用

<properties> 
    <maven.compiler.source>1.7</maven.compiler.source> 
    <maven.compiler.target>1.7</maven.compiler.target> 

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

在我的機器一切正常使用這些設置。然而,另一臺機器上,當我檢查出來,並嘗試使用mvn install編譯器錯誤unmappable character for encoding ASCII它來構建:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project scuttle: Compilation failure: Compilation failure: 
[ERROR] /export/local-1/julian-downloads/scuttle/src/main/java/de/fu/mi/scuttle/handlers/sakai/SakaiVV.java:[99,39] error: unmappable character for encoding ASCII 
[ERROR] 
[ERROR] /export/local-1/julian-downloads/scuttle/src/main/java/de/fu/mi/scuttle/handlers/sakai/SakaiVV.java:[99,40] error: unmappable character for encoding ASCII 
[ERROR] 
[ERROR] /export/local-1/julian-downloads/scuttle/src/main/java/de/fu/mi/scuttle/domain/sakai/SakvvTermin.java:[66,30] error: unmappable character for encoding ASCII 
[ERROR] 
[ERROR] /export/local-1/julian-downloads/scuttle/src/main/java/de/fu/mi/scuttle/domain/sakai/SakvvTermin.java:[66,31] error: unmappable character for encoding ASCII 

我已經嘗試運行mvn-Dfile.encoding=UTF-8但沒有幫助。 $LC_CTYPE報告UTF-8

我該怎麼辦?

您可以在這裏看到完整的POM文件:https://github.com/scravy/scuttle/blob/master/pom.xml

+0

您是否100%確定您的源代碼是UTF-8編碼的?可能它們不是,但它在你的環境中出於某種原因工作(也許你的IDE會干擾) – sola

+3

請更新你的maven-compiler-version原因2.0.2真的很舊。目前我們有3.1 .. – khmarbaise

+0

與默認的maven-compiler插件v2.0.2有相同的問題。增加版本解決問題。 – gavenkoa

回答

9

最終由khmarbaise註釋幫我找到了一個解決方案:

我配置的編譯器插件和指定的源編碼那裏,現在一切正常無處不在:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
     <encoding>UTF-8</encoding> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 
+1

偉大的你找到了你自己的問題的解決方案! –

2

您的POM所有正確的設置,所以這是很好的。驗證您的IDE(以及適用於您的團隊的其他人)是否配置爲UTF-8。

接下來,清理您的本地.m2存儲庫並再次運行您的構建。可能有可能你的一個傳遞依賴沒有使用正確的編碼進行編譯。但是,您的.m2中可能有「正確」版本,這使得一切正常,而另一臺機器上不存在相同的版本。

祝你好運!我知道這東西可能會有多惱人。

1

而不是設置maven OPTS的,設置新的環境變量 - JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF8