首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用maven UTF-8编码源文件编译失败

使用maven UTF-8编码源文件编译失败
EN

Stack Overflow用户
提问于 2017-05-05 23:22:59
回答 2查看 4.8K关注 0票数 1

我正在使用maven构建一个项目。源文件是UTF-8编码的。我的pom.xml (相关片段)是这样的:

代码语言:javascript
运行
复制
<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上显式地设置编码,但仍然不起作用。我得到的错误是:

代码语言:javascript
运行
复制
[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-resources-plugin确实会选择project.build.sourceEncoding:

代码语言:javascript
运行
复制
[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 -没有变化。

EN

回答 2

Stack Overflow用户

发布于 2017-05-06 00:13:47

您正在配置中的默认Maven行为(请参见https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html):

代码语言:javascript
运行
复制
<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属性或encoding元素:

代码语言:javascript
运行
复制
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        ...
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

代码语言:javascript
运行
复制
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
票数 2
EN

Stack Overflow用户

发布于 2017-05-05 23:53:57

嗨,我曾经遇到过这样的问题;将这个添加到您的pom.xml文件中,看看它是否有效:

代码语言:javascript
运行
复制
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

或者有另一种方法是添加名为JAVA_TOOL_OPTIONS的环境变量,将此变量设置为:-Dfile.encoding=UTF8

更多关于JAVA_TOOL_OPTIONS的信息:docs.oracle

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43808610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档