programing

오류 : Maven 컴파일 중 UTF8 인코딩에 매핑 할 수없는 문자

copyandpastes 2021. 1. 18. 22:12
반응형

오류 : Maven 컴파일 중 UTF8 인코딩에 매핑 할 수없는 문자


maven을 사용하여 패키지를 컴파일 중이며 다음 컴파일 오류로 빌드 실패라고 말합니다.

UTF8 인코딩을위한 SpanishTest.java [31, 81] 매핑 할 수없는 문자

나는 온라인으로 검색했고 많은 사람들에게 UTF-8에서 ISO-8859-1로 소스 인코딩을 변경하는 것이 작동하는 것처럼 보이지만 여전히 동일한 컴파일 오류가 발생합니다. 32 비트 Ubuntu를 사용하고 있습니다. 내 pom.xml에서 태그가 어떻게 보이는지 다음과 같습니다.

<project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>

심지어 나는 변화의 경우 <project.build.outputEncoding>ISO-8859-1 태그, 나는 아직도 때문에 자바 버전의 할 것을 error.Could를 얻을? 내 시스템에 sun java와 openjdk가 모두 설치되어 있습니다.

누구든지 무엇을 해야할지 알려주십시오.

감사


소스 파일이 인코딩 된 것과 동일한 문자 인코딩을 사용하도록 maven-compiler-plugin을 구성합니다 (예 :

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

많은 maven 플러그인은 기본적으로 "project.build.sourceEncoding"속성을 사용하므로 pom에서 설정하면 대부분의 플러그인에 적용됩니다.

<project>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
...

그러나 나는 명시 적으로 원하는대로 각 플러그인의 구성에서 인코딩을 설정하는 것을 선호합니다.

소스 코드가 maven-compiler-plugin에 의해 컴파일되면 컴파일러 플러그인이 구성된 인코딩을 사용하여 컴파일러 플러그인이 소스 코드 파일을 읽습니다. 소스 파일에 컴파일러 플러그인이 사용하는 것과 다른 인코딩이있는 경우 일부 문자가 두 인코딩 모두에 존재하지 않을 수 있습니다.

많은 사람들이이 문제를 피하기 위해 소스 파일의 인코딩을 UTF-8로 설정하는 것을 선호합니다. Eclipse에서이 작업을 수행하려면 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성-> 리소스-> 텍스트 파일 인코딩을 선택하고 UTF-8로 변경할 수 있습니다. 이렇게하면 모든 소스 파일이 UTF-8로 인코딩됩니다. (또한 UTF-8 인코딩을 사용하려면 위에서 언급 한대로 maven-compiler-plugin을 명시 적으로 구성해야합니다.) 소스 파일과 컴파일러 플러그인 모두 동일한 인코딩을 사용하는 경우 컴파일 중에 매핑 할 수없는 문자가 더 이상 없어야합니다.

또한 Window-> Preferences-> General-> Workspace-> Text File Encoding을 통해 Eclipse에서 파일 인코딩을 전역 적으로 설정할 수도 있습니다. Window-> Preferences-> General-> Content Types를 통해 파일 유형별 인코딩을 설정할 수도 있습니다.


위의 답변이 작동하지 않으면 인코딩을 cp1252로 변경하거나 특수 문자의 모든 발생을 수동으로 제거하십시오. 저에게는 특수 문자가 주석 블록 안에있는 문제를 일으켰습니다.

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <version>2.3.2</version>
   <configuration>
       <encoding>Cp1252</encoding>
   </configuration> 
</plugin>

추신 : GNU / Linux OS (Ubuntu)를 사용하고있었습니다.


방금이 문제를 발견했고 결국 이렇게 해결했습니다. Notepad ++에서 문제가되는 .java 파일을 열고 인코딩 메뉴에서 "BOM없이 UTF-8로 변환"을 선택했습니다. 저장되었습니다. Re-ran maven, 모두 괜찮아졌습니다.

문제가되는 리소스가 UTF-8로 인코딩되지 않은 경우 (Maven 컴파일러 플러그인에 대해 구성한대로) Np ++의 인코딩 메뉴에서 파일의 현재 인코딩 옆에 글 머리 기호가 표시됩니다 (제 경우에는 "ANSI로 인코딩").

따라서 maven 컴파일러 플러그인이 -encoding 옵션이 UTF-8로 설정된 Java 컴파일러를 호출했지만 컴파일러가 ANSI 인코딩 소스 파일을 발견하고이를 오류로보고했습니다. 이전에는 Java 5에서 경고 였지만 Java 6 이상에서는 오류로 처리되었습니다.


이것은 다음 시나리오에서 발생합니다. Windows에서 작업 할 때 IDE는 라틴 -11을 Microsoft에서 수정 한 Cp1252에서 파일을 편집하도록 구성되었을 가능성이 높습니다. 개발자가 체크인하고 Continuous Integration 서버 (일반적으로 Linux에서 실행되며 현재는 모두 utf8 임)가 파일을 선택하고 UTF-8 파일로 컴파일을 시도하므로 경고가 표시됩니다.

인코딩을 cp1252로 변경해보십시오 . 작동합니다. 이러한 종류의 향후 문제를 방지하려면 모든 개발자 컴퓨터에서 동일한 인코딩을 사용하십시오.

행운을 빕니다...


In my case I resolved that problem using such approach:

  1. Set new environment variable: JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF8
  2. Or set MAVEN_OPTS= -Dfile.encoding=UTF-8

I too faced a similar issue and my resolution was different. I went to the line of code mentioned and traversed to the character (For SpanishTest.java[31, 81], go to 31st line and 81th character including spaces). I observed an apostrophe in comment which was causing the issue. Though not a mistake, the maven compiler reports issue and in my case it was possible to remove maven's 'illegal' character.. lol.


When i inspect the console i found that the version of maven compiler is 2.5.1 but in other side i try to build my project with maven 3.2.2.So after writting the exact version in pom.xml, it works good. Here is the full tag:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.2</version>
  <configuration>
   ....
  <configuration>
</plugin>

Set incodign attribute in maven-compiler plugin work for me. The code example is the following

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

I guess the issues happens at the encode strings. I solved same issues. Please try adding trim() at last of the encode string.

ReferenceURL : https://stackoverflow.com/questions/8978013/error-unmappable-character-for-encoding-utf8-during-maven-compilation

반응형