用maven UTF-8编码的源文件编译失败
我正在使用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 - 没有变化。
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
请仔细阅读该问题。我已经尝试了你的建议,但它不起作用。我已经说过,JAVA_TOOL_OPTIONS是我可以使其工作的唯一方式(但它在别处造成麻烦) –
您是否尝试将'project.build.sourceEncoding'属性的值设置为UTF-8?它应该工作。 – toongeorges
您配置在默认的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>
我看到你的原始pom.xml中有
完整的pom.xml是100行。我可以在问题结尾处添加此问题的任何方式崩溃(像扰流板)? –
试着找出cp1253编码来自哪里。我在我的笔记本电脑上用不同的编码在本地尝试了你的maven-compiler-plugin,并且如果设置了'project.build.sourceEncoding',它就会按预期工作。我认为配置有问题,将此属性的值更改为cp1253。 – toongeorges
有什么' 1.3 compilerVersion>'和源编码之间的关系?像1.3这样的东西不允许使用'UTF-8'。我们可以有1.8吗? –
这个DID解决了我的问题。谢谢! –