【问题标题】:cxf-codegen-plugin doesn't generate UTF-8-compatible filescxf-codegen-plugin 不生成 UTF-8 兼容文件
【发布时间】:2014-12-01 11:10:16
【问题描述】:

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

WSDL 文件包含 XSD 文件,这些文件又使用法语重音字符,如 é, è, à 等。我对 WSDL 没有任何帮助,因为我必须在交付时使用它们。

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

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

我希望 java 文件以 UTF-8 生成,因为我们所有的项目都使用 UTF-8,并且由于以下错误,我们的开发人员无法在 Windows 上本地编译 java 类: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>

【问题讨论】:

    标签: maven encoding wsdl2java cxf-codegen-plugin


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 2021-10-10
      • 2015-01-31
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      相关资源
      最近更新 更多