使用Maven时,wsimport失败了。

3
我正在尝试使用Maven和NetBeans(7.2)创建一个SSL Web服务客户端。 这个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>

感谢您。
3个回答

0
我们遇到了类似的问题。在执行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>

移除这个固定的问题。我们还使用了jaxws-maven-plugin的2.3版本。


0

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

请检查您的Maven环境变量:M2M2_HOME

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

M2 -“%M2_HOME%\bin”(对于Windows机器)


0

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

似乎是因为 wsimport 在处理 jaxb2.12.2 版本时出现了问题。

通过编辑项目的 pom.xml 文件,并为每个导入的 wsdl 配置添加一个 <target>2.1</target> 标签,我成功地生成了 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>

希望这能帮助遇到这个问题的人。

根据这个java.net讨论,2.1与2.2的区别取决于运行环境所使用的JDK版本。因此,JDK 6包含JAX-WS实现2.1。 - jfrantzius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接