好的,这是一个奇怪的问题: 我有一个使用一些UTF-8字符的Java测试文件。当我使用Maven编译它时,
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
当我使用编译文件时
javac path/to/file.java
我遇到了类似的错误:
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
Now when I use
javac -encoding UTF-8 path/to/file.java
相反,我收到了“找不到符号”错误,因为缺少依赖项。所以我认为问题在于,在Maven编译测试时,没有使用UTF-8选项调用
javac
(请注意,compiler:testCompile
部分中缺少“使用'UTF-8'编码复制过滤资源。”)。这个结论正确吗?我错过了什么吗?这是一个已知的问题吗?我能做些什么吗?显然,我的系统上的平台编码不是UTF-8,但我目前无法更改它。
project.build.SourceEnconding
属性,但没有改变任何东西。而且这应该与在命令行中给出-Dproject.build.sourceEncoding=
是一样的。 - roesslerj