0

我在下面有这个 POM,它不会生成 UTF-8 格式的文件。

WSDL 文件包含 XSD 文件,这些文件又使用法语重音字符é, è, à,例如 等。我对 WSDL 无能为力,因为我必须在交付时使用它们。

根据 Notepad++,WSDL 和 XSD 文件在没有 BOM 的情况下以 UTF-8 正确编码。

当我尝试生成 java 文件时,这些 java 文件是在 DOS/Windows 字符集中生成的,同样根据 Notepad++。

我希望以 UTF-8 生成 java 文件,因为我们所有的项目都使用 UTF-8,并且由于以下错误,我们的开发人员无法在 Windows 上本地编译 java 类:error: unmappable character for encoding UTF-8.

我阅读了有关此的 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>
4

1 回答 1

0

我阅读了上述链接中的文档。它说使用 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。

于 2014-12-01T13:16:05.137 回答