【问题标题】:wsimport fail with mavenwsimport 使用 Maven 失败
【发布时间】:2013-01-15 21:27:42
【问题描述】:

我正在尝试使用 maven 和 netbeans(7.2) 创建一个 ssl webservice 客户端。 Web 服务运行良好,我使用 ant 项目对其进行了测试。

当我尝试构建项目并生成 web 服务存根时,我收到此错误:

Failed to execute goal org.jvnet.jax-ws-commons:jaxws-maven-plugin:2.2:wsimport (wsimport-generate-test_project_ws_v1) on project mavenproject3: Error executing: wsimport [-keep, -s, C:\Users\no_name\Documents\NetBeansProjects\mavenproject3\target\generated-sources\jaxws-wsimport, -verbose, -encoding, UTF-8, -extension, -Xnocompile, -catalog, C:\Users\no_name\Documents\NetBeansProjects\mavenproject3\src\jax-ws-catalog.xml, -wsdllocation, https://localhost:8181/test_project_ws_v1/test_project_ws_v1?wsdl, file:/C:/Users/no_name/Documents/NetBeansProjects/mavenproject3/src/wsdl/localhost_8181/test_project_ws_v1/test_project_ws_v1.wsdl]: UndeclaredThrowableException: javax.xml.bind.annotation.XmlElementRef.required() -> [Help 1]

这是我的 pom(由 netbeans 生成)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.procc</groupId>
  <artifactId>mavenproject3</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>mavenproject3</name>
  <url>http://maven.apache.org</url>
  <build>
    <resources>
      <resource>
        <targetPath>META-INF</targetPath>
        <directory>src</directory>
        <includes>
          <include>jax-ws-catalog.xml</include>
          <include>wsdl/**</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.jvnet.jax-ws-commons</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
        <version>2.2</version>
        <executions>
          <execution>
            <goals>
              <goal>wsimport</goal>
            </goals>
            <configuration>
              <wsdlFiles>
                <wsdlFile>localhost_8181/test_project_ws_v1/test_project_ws_v1.wsdl</wsdlFile>
              </wsdlFiles>
              <wsdlLocation>https://localhost:8181/test_project_ws_v1/test_project_ws_v1?wsdl</wsdlLocation>
              <staleFile>${project.build.directory}/jaxws/stale/test_project_ws_v1.stale</staleFile>
            </configuration>
            <id>wsimport-generate-test_project_ws_v1</id>
            <phase>generate-sources</phase>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>javax.xml</groupId>
            <artifactId>webservices-api</artifactId>
            <version>1.4</version>
          </dependency>
        </dependencies>
        <configuration>
          <sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir>
          <xnocompile>true</xnocompile>
          <verbose>true</verbose>
          <extension>true</extension>
          <catalog>${basedir}/src/jax-ws-catalog.xml</catalog>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.sun.xml.ws</groupId>
      <artifactId>webservices-rt</artifactId>
      <version>1.4</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

谢谢。

【问题讨论】:

    标签: web-services jakarta-ee maven netbeans


    【解决方案1】:

    我最近遇到了同样的错误。

    这似乎是因为 wsimportjaxb2.12.2 版本混淆了。

    通过编辑项目 pom.xml 并将&lt;target&gt;2.1&lt;/target&gt; 标记添加到每个导入的 wsdl 的配置中,我能够正确生成 Web 服务源,如下所示:

                 <execution>
                    <goals>
                       <goal>wsimport</goal>
                    </goals>
                    <configuration>
                       <wsdlFiles>
                          <wsdlFile>path/to/file.wsdl</wsdlFile>
                       </wsdlFiles>
                       <wsdlLocation>http://path/to/webservice?wsdl</wsdlLocation>
                       <staleFile>path/to/file.stale</staleFile>
                       <target>2.1</target>
                    </configuration>
                    <id>wsimport-generate-WebServiceName</id>
                    <phase>generate-sources</phase>
                 </execution>
    

    希望对遇到此问题的人有所帮助。

    【讨论】:

    • 根据this java.net discussion,2.1 与 2.2 是由它运行的 JDK 版本决定的。据此,JDK 6 包含 JAX-WS 实现 2.1。
    【解决方案2】:

    我们遇到了类似的问题。在执行 wsimport 时,我们得到一个命令行错误,指出 -encoding 是一个无效参数。

    查看 POM,jaxws-maven-plugin 的插件部分存在以下依赖项:

    <dependencies>
        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-tools</artifactId>
            <version>2.2.5</version>
       </dependency>
    </dependencies>
    

    删除这个解决了这个问题。我们也在使用 2.3 版的 jaxws-maven-plugin

    【讨论】:

      【解决方案3】:

      我可以在一台机器上构建,但不能在另一台机器上构建 - 问题是由环境变量引起的

      检查您的 Maven 环境变量,M2M2_HOME

      M2_HOME - “Apache-maven-root-directory>” 例如("C:\Tools\apach-maven")

      M2 - “%M2_HOME%\bin”(适用于windows机器)

      【讨论】:

        猜你喜欢
        • 2012-04-21
        • 1970-01-01
        • 1970-01-01
        • 2014-08-17
        • 1970-01-01
        • 1970-01-01
        • 2010-11-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多