当前位置: 首页 > 知识库问答 >
问题:

MAcOS上的Maven构建错误:“UTF-8编码的不可映射字符”

邹麻雀
2023-03-14

我在Eclipse Kepler上开发MacOs。

export JAVA _TOOL_OPTIONS -Dfile.encoding=UTF-8
mvn -version


Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Apache Maven 3.0.4 (r1232337; 2012-01-17 09:44:56+0100)
Maven home: /usr/share/maven
Java version: 1.6.0_45, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: fr_FR, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.4", arch: "x86_64", family: "mac"

但我是通过Eclipse运行maven的,Eclipse说平台编码宏...当我运行一个

清洁安装

Apache Maven 3.0.4 (r1232337; 2012-01-17 09:44:56+0100)
Maven home: /Users/JP/git/CleanOmicsTracer/EMBEDDED
Java version: 1.6.0_45, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: fr_FR, platform encoding: MacRoman
OS name: "mac os x", version: "10.8.4", arch: "x86_64", family: "mac"

在我的pom.xml中,我将其设置为this以设置UTF-8:

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

    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
            <tag>${project.build.finalName}</tag>
            <url>http://localhost:8080/manager/text</url>
            <server>localhost</server>
            <charset>UTF-8</charset>
            <update>true</update>
            <path>/${project.build.finalName}</path>
            <username>jp</username>
            <password>camille</password>
        </configuration>
    </plugin>

     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
        <source>${jdk.version}</source>
        <target>${jdk.version}</target>
        <encoding>${project.build.sourceEncoding}</encoding>
        <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>

        <fork>true</fork>
            <meminitial>128m</meminitial>
             <maxmem>1024m</maxmem>
            <url>http://localhost:8080/manager/text</url>
            <server>localhost</server>
            <path>/${project.build.finalName}</path>
        </configuration>
    </plugin>


     <plugin>
     <artifactId>maven-resources-plugin</artifactId>
     <version>2.6</version>
     <configuration>
     <encoding>${project.build.sourceEncoding}</encoding>
     <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
     </configuration>
     </plugin>

[INFO]----maven-resources-plugin:2.6:resources(default-resources)@CleanOmicsTracer----[INFO]使用'UTF-8'编码复制筛选的资源。[信息]复制36个资源[信息]

[INFO]----maven-compiler-plugin:3.1:compile(default-compile)@CleanOmicsTracer----[INFO]检测到更改--重新编译模块![信息]将142个源文件编译到/users/jp/git/cleanomicstracer/target/classes[信息]

[INFO]----maven-resources-plugin:2.6:TestResources(default-testResources)@CleanOmicsTracer----[INFO]使用'UTF-8'编码复制筛选的资源。[信息]跳过不存在的资源目录/users/jp/git/cleanomicstracer/src/test/resources

更新:我将eclipse配置改为使用/usr/share/maven,而不是盗用的版本。我仍然有错误,而这次平台编码被很好地设置为UFT-8:

Apache Maven 3.0.4 (r1232337; 2012-01-17 09:44:56+0100)
Maven home: /usr/share/java/maven-3.0.4
Java version: 1.6.0_45, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: fr_FR, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.4", arch: "x86_64", family: "mac"

[ERROR] /com/clb/genomic/lyon/validator/ParticipantExistenceValidator.java:[101,93] unmappable character for encoding UTF-8
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: 
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project CleanOmicsTracer: Compilation failure

共有1个答案

长孙淳
2023-03-14

如果它在平台编码设置为MacRoman时工作,但在设置为UTF-8时失败,则意味着ParticipantExistenceValidator不是UTF-8编码。您需要修复文件,而不是配置。

一种简单的方法是使用native2ascii两次,首先将MacRoman转换为unicode转义,然后使用-reverse将转义转换回UTF-8。

 类似资料:
  • 我在项目中使用Java、Eclipse和Ant。我有一些Java代码需要编辑并在其中添加一些UTF-8字符。以前是我的身材。xml:而且它工作得很好。现在,在我尝试运行时添加这些UTF-8字符之后,它抛出“错误:编码Cp1252的不可映射字符” 谁能告诉我解决办法是什么?我试图改变编码UTF-8和cp1252在xml但没有运气。 我使用的是JRE7、Eclipse开普勒和蚂蚁4.11。

  • null 在一个案例中,我还意识到,如果我从Git diff复制原始值,并用它替换Eclipse中错误的值,那么我在消息属性文件中就有了正确的umlauts。

  • 我的rails应用程序遇到了问题,我最近从一个不同的开发人员那里接管了这个应用程序。虽然我知道错误意味着什么,我知道我需要强制所有的UTF-8,但没有运气。我已经尝试清理应用程序目录,并将所有文件更新为UTF-8(以前在不同的应用程序上工作过)。 我还阅读了关于ruby的UTF-8问题的不同帖子(例如这里和这里)。 当我运行或任何其他bundle操作时,我会得到以下信息: 还有以下绑定程序的其他错

  • 问题内容: 我目前正在研究一个Java项目,该项目在编译时会发出以下警告: 我不确定SO如何在日期之前呈现该字符,但是它应该是版权符号,并在警告中以菱形问号显示。 值得注意的是,该字符正确地出现在输出工件中,但是警告令人讨厌,并且文本编辑器可能有一天会触摸包含此类的文件,而该文本编辑器会错误地保存编码… 如何将这个字符注入“版权”字符串中,以使编译器满意,并且将符号保留在文件中而没有潜在的重新编码

  • 问题内容: 我目前正在从事一个项目,我不使用常规的MySQL查询,而是继续学习如何使用PDO。 我有一个称为参赛者的表,数据库,表和所有列均位于utf-8中。我的参赛者表中有10个条目,而它们的“名称”列中包含诸如åäö之类的字符。 现在,当我从数据库中获取一个条目并使用var_dump的名称时,我得到了一个很好的结果,即一个包含所有特殊字符的字符串。但是我需要做的是按字符分割字符串,将它们放入数

  • 如果UTF-8是8位,不意味着最多只能有256个不同的字符吗? 前128个代码点与ASCII中的相同。但是它说UTF-8可以支持多达百万个字符? 这是怎么回事?