2014-12-01 2 views
0

이 POM은 UTF-8로 파일을 생성하지 않습니다.cxf-codegen-plugin이 UTF-8 호환 파일을 생성하지 않습니다.

WSDL 파일에는 é, è, à 등의 프랑스어로 강조 표시된 문자가 사용되는 XSD 파일이 있습니다. WSDL에는 배달 된 그대로 사용해야하므로 사용할 수 없습니다.

메모장 + +에 따르면 WSDL 및 XSD 파일은 BOM이없는 UTF-8로 올바르게 인코딩됩니다.

Java 파일을 생성하려고하면 해당 Java 파일은 메모장 ++에 따라 DOS/Windows charset에서 다시 생성됩니다.

모든 프로젝트가 UTF-8을 사용하고 java 클래스가 다음 오류로 인해 Windows의 개발 자에게 로컬로 컴파일 될 수 없기 때문에 Java 파일이 UTF-8로 생성되기를 바랍니다. error: unmappable character for encoding UTF-8.

나는 이것에 관해 documentation of CXF을 읽고, 플러그인에서 JAXB의 두 종속성을 직접 추가하는 것을 포함하여 설명 된 모든 것을 만들었습니다. 그러나 그것은 효과가 없습니다.

CXF 버전 2.6.10 (특정 인코딩으로 파일을 생성하는 옵션이 포함 된 2.6.1 이후에 출시 됨)을 사용하고 있습니다.

<plugin> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-codegen-plugin</artifactId> 
    <version>${cxf.version}</version> 
    <configuration> 
     <encoding>UTF-8</encoding> 
    </configuration> 
    <executions> 
     <execution> 
      <id>generate-sources</id> 
      <phase>generate-sources</phase> 
      <configuration> 

       <sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot> 
       <wsdlOptions> 
        <wsdlOption> 
         <wsdl>${basedir}/src/main/webapp/WEB-INF/wsdl/service_v1.wsdl</wsdl> 
         <bindingFiles> 
          <bindingFile>${basedir}/src/main/xjb/bindings.xml</bindingFile> 
         </bindingFiles>           
        </wsdlOption> 
        <wsdlOption> 
         <wsdl>${basedir}/src/main/webapp/WEB-INF/wsdl/service_internals_v1.wsdl</wsdl> 
         <bindingFiles> 
          <bindingFile>${basedir}/src/main/xjb/internals-bindings.xml</bindingFile> 
         </bindingFiles>                                            
        </wsdlOption>                             
       </wsdlOptions> 
       <extraargs> 
        <extraarg>-validate</extraarg> 
        <extraarg>-verbose</extraarg> 
        <extraarg>-p</extraarg> 
        <extraarg>be.mycompany</extraarg> 
        <extraarg>-exceptionSuper java.lang.Exception</extraarg> 
       </extraargs> 
      </configuration> 
      <goals> 
       <goal>wsdl2java</goal> 
      </goals> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
      <groupId>com.sun.xml.bind</groupId> 
      <artifactId>jaxb-impl</artifactId> 
      <version>2.2</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.xml.bind</groupId> 
      <artifactId>jaxb-xjc</artifactId> 
      <version>2.2</version> 
     </dependency> 
    </dependencies> 
</plugin> 

답변

0

나는 위에 언급 된 링크의 문서를 읽었습니다. 2.2에서 jaxb를 사용한다고합니다. 이제 Jira 문제를 확인하고 2.2 버전 대신 2.2.5 버전을 사용해야한다는 내용을 읽었습니다.

그래서 내 POM 대신 질문에 기록 된 무슨이있다 : 마지막으로

<dependencies> 
     <dependency> 
      <groupId>com.sun.xml.bind</groupId> 
      <artifactId>jaxb-impl</artifactId> 
      <version>2.2.5</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.xml.bind</groupId> 
      <artifactId>jaxb-xjc</artifactId> 
      <version>2.2.5</version> 
     </dependency> 
    </dependencies> 

, 나는 JAXB, 2.2.11의 최신 버전을 사용하려고하지만 유지 있도록이 하나의 새로운 컴파일 문제를 도입 결국 2.2.5.

관련 문제