【问题标题】:wadl-client-plugin fails on Java 10wadl-client-plugin 在 Java 10 上失败
【发布时间】:2018-12-27 23:40:16
【问题描述】:

让我们从一个在 Java 8 上正常工作的 wadl-client-plugin 配置开始(前提是我在 JDK 中添加了一个 jaxp.properties 文件,如文档中的 here 所示):

<plugin>
  <groupId>org.jvnet.ws.wadl</groupId>
  <artifactId>wadl-client-plugin</artifactId>
  <version>1.1.6</version>
  <executions>
    <execution>
      <goals>
        <goal>generate</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <targets>
      <target>http://127.0.0.1:8080/sigb/rest/application.wadl</target>
    </targets>
    <packageName>sigb.ws</packageName>
    <autopackaging>true</autopackaging>
    <customizations>
      <customization>${basedir}/src/main/resources/bindings.xjb</customization>
    </customizations>
    <customClassNames>
      <property>
        <name>http://127.0.0.1:8080/sigb/rest/</name>
        <value>SigbWsClient</value>
      </property>
    </customClassNames>
    <generationStyle>jaxrs20</generationStyle>
  </configuration>
</plugin>

从上面可以猜到,我的 WADL 是由 Jersey 生成的,它是我用来开发 REST 应用程序的支持框架。

当切换到 Java 9 或 10 时,当然我必须为 JAXB 添加依赖项,默认情况下不再可用。我在上面的配置中添加了以下内容:

<dependencies>
  <dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
  </dependency>
  <dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.0.1</version>
  </dependency>
</dependencies>

现在 JAXB 失败了,因为命名空间 Jersey(正确地)包含在它生成的 WADL 中。错误描述如下(我从法语翻译了消息,所以它们可能与原来的英文版本不完全匹配):

[ERROR] Failed to execute goal org.jvnet.ws.wadl:wadl-client-plugin:1.1.6:generate (default) on project sigbws-bul-ws-client: Failed to generate sources from http://127.0.0.1:8080/sigb/rest/application.wadl. Internal error: unexpected element (URI : "http://wadl.dev.java.net/2009/02", local : "application"). Expected elements are <{}application>,<{}doc>,<{}grammars>,<{}include>,<{}link>,<{}method>,<{}option>,<{}param>,<{}representation>,<{}request>,<{}resource>,<{}resource_type>,<{}resources>,<{}response> -> [Help 1]

如果有人知道这个错误,任何帮助将不胜感激。

提前谢谢...

【问题讨论】:

  • 您找到解决问题的方法了吗?
  • 还没有,但从那以后我放弃了这条路。我计划在不久的将来尝试使用 Java 16 或 17。如果我发现任何新内容,我会在此页面上发布。

标签: java jaxb jersey jax-rs wadl


【解决方案1】:

我在 GitLab 管道上遇到了这个问题,而本地一切正常。在管道中,使用了由我们的运维人员创建的 docker 镜像。代码是从该镜像中的 gitlab 下载并在那里构建的。

我尝试使用手动安装的 jdk11 和 maven 将代码上传到 docker alpine 映像。在这种情况下构建工作。

创建此图像的操作人员检查了它并告诉我,由于公司政策,某些 maven 依赖项是不允许的,当他们允许所有依赖项时,一切正常。不幸的是,我没有被告知确切的依赖名称,但希望这个方向会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 2018-03-03
    • 2014-12-21
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多