java - JAXB/xjc 生成的异常类不可抛出

标签 java gradle jaxb wsdl xjc

我正在使用 jaxb-xjc(版本 2.2.4-1,在 Gradle 任务中)从 wsdl 生成 Java 类(用作 Web 服务客户端)。

根据 wsdl 文档,某些端点可能会抛出自定义异常。

生成的代码看起来不错,但有一个细节除外:生成的异常类不扩展 Throwable(或任何其他可以扩展它的类)。 WSDL 似乎没问题,因为这些端点中有一个名为错误元素(示例):

<wsdl:fault name="IdentityNotFoundException" message="work_v2:IdentityNotFoundException"/>

有没有办法配置 xjc 使这些自定义异常类成为“真正的”异常类?当前 Gradle/xjc 任务配置为:

            xjc(destdir: sourcesDir, schema: "src/main/resources/wsdl/workService_v2.wsdl",
                package: "workService.generated") {
            arg(value: "-wsdl")
            produces(dir: sourcesDir, includes: "**/*.java")
        }

最佳答案

找到了解决此问题的方法:

我没有使用 xjc,而是使用了另一个生成器:wsdl2java

令人惊讶的是 - 新生成的类现在扩展了 Exception 类! wsdl2java 使用的 Gradle 设置是根据其 Github 页面中的示例进行的。

关于java - JAXB/xjc 生成的异常类不可抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29539330/

相关文章:

java - 类正在实现 runnable 接口(interface)但未定义 run 方法

使用 NDK 构建 Superpowered 时出现 Android Studio ExternalSystemException 错误

eclipse - JaxB @XmlRootElement 结果为 "Cannot resolve xml element declaration"

java - 使用 Java 代码设置 Hibernate 映射值

java - 在运行时在标签中显示图像

java - 尝试运行Spring Boot应用程序时无法部署到Docker

android - 将 JAXB 与 Google Android 一起使用

java - 当你有 xml 命名空间时如何解码?

java - 如何在 Java 中构建 SPARQL 查询?

groovy - 自动格式化build.gradle