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



我在Eclipse开普勒上开发MacO。

我正在尝试使用UTF8运行maven,使其依赖于操作系统。

我想我已经尝试了很多解决方案,这些解决方案似乎对其他人有效,而对我无效

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说平台编码macRoman。。。当我运行时

清洁安装

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中,我将其设置为设置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>

它不起作用,我的.java中的éandè创建了一个错误:

当我在maven中更改编译插件时,这行

macRoman

,这将是可以的,但在我的另一台linux计算机中,不会有更多的Os依赖项和字符被误解。

当我清理安装时,输出对资源是可以的,但对编译器什么都不做:

【信息】---maven resources插件:2.6:resources(默认资源)@CleanOmicsTracer---[INFO]使用"UTF-8"编码复制筛选资源。[INF]正在复制36个资源[INF]

[信息]---maven编译器插件:3.1:compile(默认编译)@CleanOmicsTracer---[INFO]检测到更改-正在重新编译模块![信息]编译142个源文件到/Users/JP/git/CleanOmicsTracser/target/classes[INF]

〔信息〕---maven资源插件:2.6:testResources(默认testResources)@CleanOmicsTracer---[INFO]使用"UTF-8"编码以复制已筛选的资源。[信息]跳过不存在的resourceDirectory/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

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

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

最新更新