오류 : 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:
- Set new environment variable:
JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF8
- 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
'programing' 카테고리의 다른 글
지난 7 일 동안 만 로그 파일을 보관하도록 log4j를 구성하는 방법은 무엇입니까? (0) | 2021.01.18 |
---|---|
CurrentCulture, InvariantCulture, CurrentUICulture 및 InstalledUICulture의 차이점 (0) | 2021.01.18 |
정수 목록에 대한 JSON (0) | 2021.01.18 |
Ruby로 파일 수정 날짜를 읽을 수 있습니까? (0) | 2021.01.18 |
Paypal IPN을 통한 구독 (0) | 2021.01.17 |