【问题标题】:How to change the encoding of wsimport-generated files?如何更改 wsimport 生成文件的编码?
【发布时间】:2010-12-25 06:54:38
【问题描述】:

我正在使用 JAX-WS 的 wsimport ant 任务来生成基于某些 wsdl 的源代码。

但是,这些生成的源似乎都是 UTF-8 编码的。有没有办法改变 wsimport 任务产生的文件的编码?

【问题讨论】:

  • 为什么你不想使用 UTF-8?
  • 因为在这个项目上,所有其他 java surces 都是 Cp1252 编码的。混合源编码可能会导致编译器出现问题,尤其是在使用非 ASCII 字符时。所以我希望 wsimport 生成 Cp1252 编码的 java 源代码。

标签: java jax-ws


【解决方案1】:

如果您通过使用gradle 的ant 任务使用wsimport,您可以简单地使用encoding 属性在wsimport 中指定所需的编码。我使用 wsimport 版本 2.2.7

进行了测试
configurations {
   schemaGenerationBeans
}

dependencies {
   // dependencies per compilar schemas
   schemaGenerationBeans 'com.sun.xml.bind:jaxb-xjc:2.2.7'
   schemaGenerationBeans 'com.sun.xml.ws:jaxws-ri:2.2.7'
   schemaGenerationBeans 'com.sun.xml.ws:jaxws-tools:2.2.7'
}

task generateJaxb {

    ant.taskdef(name: 'wsimport', classname: 'com.sun.tools.ws.ant.WsImport', classpath: configurations.schemaGenerationBeans.asPath)

    ant.wsimport(wsdl: "$projectDir/src/main/resources/somepath/YOUR_WSDL.wsdl",
            wsdlLocation: "/somepath/YOUR_WSDL.wsdl", // relative path for generated classes
            package: 'org.your.package.xsd',
            xnocompile: 'true',
            xendorsed: 'true',
            sourcedestdir: "$projectDir/src/main/java/",
            encoding : 'utf-8' // DESIRED ENCODING PROPERTY!
    )
}

【讨论】:

    【解决方案2】:

    JDK 8 中的 wsimport 2.2.9 具有可用于此目的的 -encoding 选项。例如:

    wsimport -keep -s c:\path\to\src c:\wsdl\myService.wsdl -encoding cp1252
    

    我在 wsimport 2.1.6 (JDK 6) 或 2.2.4-b01 (JDK 7) 中都找不到这个选项。

    【讨论】:

    • 完美运行 +1。对我来说,它也适用于以前的版本(2.2.7)
    • 也为我工作! +1
    【解决方案3】:

    将环境变量设置为JAVA_TOOL_OPTIONS-Dfile.encoding=UTF8

    windows 终端示例:

    set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
    
    c:>wsimport -keep ... file.wsdl
    
    Picked up `JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8`
    parsing WSDL...
    
    Generating code...
    

    【讨论】:

      【解决方案4】:

      我用我的注册帐户发帖:

      设置环境变量JAVA_TOOL_OPTIONS为-Dfile.encoding=UTF8

      windows 中的示例:

      set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
      
      c:>wsimport -keep ... file.wsdl
      

      拿起JAVA_TOOL_OPTIONS:-Dfile.encoding=UTF8 正在解析 WSDL...

      正在生成代码...

      【讨论】:

        【解决方案5】:

        这有点不好记录。 WSImport 使用 XJC(来自 JAXB)创建 Java 文件,文档 here 表明更改 XML 文件中的字符编码就足够了(尽管我没有尝试过)。如果您对手动运行 JAXB 感到满意,那么您还可以通过 JAXBContext 上的 JAXB_ENCODING 属性进行配置。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-04-16
          • 2012-08-30
          • 1970-01-01
          • 1970-01-01
          • 2012-06-27
          • 2016-09-12
          • 1970-01-01
          相关资源
          最近更新 更多