cxf-codegen-plugin не создает файлы, совместимые с UTF-8

У меня есть этот POM ниже, который не генерирует файлы в UTF-8.

Файлы WSDL содержат файлы XSD, которые, в свою очередь, используют символы с французским акцентом, такие как é, è, à и т. Д. Я не имею никакого отношения к WSDL, поскольку я должен использовать их в том виде, в каком они поставляются.

Согласно Notepad ++, файлы WSDL и XSD правильно закодированы в UTF-8 без спецификации.

Когда я пытаюсь сгенерировать файлы java, эти файлы java создаются в кодировке DOS / Windows, опять же согласно Notepad ++.

Я хочу, чтобы файлы java создавались в UTF-8, потому что все наши проекты используют UTF-8, а классы java не могут быть скомпилированы локально нашими разработчиками в Windows из-за следующей ошибки: error: unmappable character for encoding UTF-8.

Я прочитал документацию CXF о this и сделал все, как описано, включая добавление двух зависимостей 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>

person Olivier Grégoire    schedule 01.12.2014    source источник


Ответы (1)


Я прочитал документацию по указанной выше ссылке. В нем говорится, что нужно использовать jaxb 2.2. Теперь я проверил проблему с Jira и прочитал, что мне нужно использовать версию 2.2.5 вместо версии 2.2.

Итак, мой 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 в конце.

person Olivier Grégoire    schedule 01.12.2014