2012-05-31 5 views
5

これは奇妙な問題です: 私はいくつかのUTF-8文字を使用するJavaテストファイルを持っています。私は(これmaven platform encodingを参照してください、認知プラットフォームのエンコーディングとソースファイルのエンコーディングの両方を設定する)MVNがUTF-8エンコーディングを使用しないでコンパイルする

mvn -Dfile.encoding=UTF-8 -Dproject.build.sourceEncoding=UTF-8 test 

を使用して、Mavenのでそれをコンパイルすると、私は

でファイルをコンパイルするとき、私は

[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building project 
[INFO] task-segment: [test] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [resources:resources {execution: default-resources}] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory path/src/main/resources 
[INFO] [compiler:compile {execution: default-compile}] 
[INFO] Nothing to compile - all classes are up to date 
[INFO] [resources:testResources {execution: default-testResources}] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory path/src/test/resources 
[INFO] [compiler:testCompile {execution: default-testCompile}] 
[INFO] Compiling 7 source files to path/target/test-classes 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Compilation failure 
path/to/file.java:[42,23] unclosed character literal 
path/to/file.java:[42,25] ';' expected 
path/to/file.java:[42,26] unclosed character literal 
path/to/file.java:[47,23] unclosed character literal 
path/to/file.java:[47,25] illegal character: \182 
path/to/file.java:[47,26] unclosed character literal 

のような何かを得ます

path/to/file.java:42: unclosed character literal 
    illegalCharEnc('ä'); 
       ^
path/to/file.java:42: ';' expected 
    illegalCharEnc('ä'); 
        ^
path/to/file.java:42: unclosed character literal 
    illegalCharEnc('ä'); 
        ^
path/to/file.java:47: unclosed character literal 
    illegalCharDec('ö'); 
       ^
path/to/file.java:47: illegal character: \182 
    illegalCharDec('ö'); 
        ^
path/to/file.java:47: unclosed character literal 
    illegalCharDec('ö'); 
        ^
6 errors 
javac path/to/file.java 

は私が同様のエラーを取得します私が代わりに

javac -encoding UTF-8 path/to/file.java 

を使用する場合

は今、私が見つからないため、依存関係のため、cannot find symbolエラーが発生します。だから私は、javacが、テストをコンパイルするときにMavenのUTF-8オプションで呼び出されないということを理解しています。compiler:testCompile -sectionにUsing 'UTF-8' encoding to copy filtered resources.が見つからないことに注意してください。 この結論は正しいですか?何か不足していますか?これは既知の問題ですか?私はそれについて何かできることは何ですか? 明らかに、私のシステムでのプラットフォームのエンコーディングはUTF-8ではありませんが、現在は変更できません。

+0

プラットフォームのデフォルトのエンコーディングをUTF-8に設定すると、この問題は解決されました。この問題は、UTF-8だけでなく、さまざまなエンコーディング標準がサポートされています。これはMavenのバグだと思う。 – roesslerj

+0

コンパイラプラグインのどのバージョンを使用していますか? – khmarbaise

+0

コンパイラプラグインのバージョンがpomに指定されていない、Mavenのバージョンが "2.2.1(rdebian-4)"です。私は 'project.build.SourceEnconding'プロパティをpomに指定しようとしましたが、何も変更しませんでした。とにかくコマンドラインで '-Dproject.build.sourceEncoding ='を指定するのと同じでなければなりません。 – roesslerj

答えて

5

のMavenコンパイラプラグイン、エンコーディングをとります。しかし、私はさらに見て、答えた別の質問を発見し、これを解決する私を助け無応答がなかったとして構成パラメータとして使用します。

<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> 
関連する問題