java.lang.NoSuchMethodError:javax.xml.ws.WebFault.messageName

我有一个Web服务的wsdl文件。 我想测试客户端和服务器之间的交互。 要做到这一点,我运行嵌入灰熊的模拟服务器。

关于实现模拟服务器的问题。 我使用wsimport从wsdl(和xsd)生成了一个接口并编写了实现。 在灰熊上运行时,出现以下错误:

com.sun.xml.ws.server.ServerRtException: [failed to localize] cannot.load.wsdl(META-INF/wsdl/test.wsdl)

我使用此代码运行Web服务:

 HttpHandler httpHandler = new JaxwsHandler(new TestImpl());
 server.getServerConfiguration().addHttpHandler(httpHandler, "/test");

问题是灰熊无法找到wsdl和xsd文件。 在嵌入式玻璃鱼的工作。

EDIT1

我将wsdlLocation更改为“test.wsdl”及其工作。 但现在灰熊说:

java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName()Ljava/lang/String;

EDIT2

如果使用JDK1.7它的作品。 但我需要一个JDK 1.6


我不确定你为什么看到这个错误。 我可以运行Grizzly jaxws示例并使用1.6或1.7来获取wsdl。

我会建议您查看示例的source1并与您拥有的内容进行比较。


我将jdk6更改为jdk7并且工作正常! 不要忘记改变JAVA_HOME和Netbeans的默认JDK,如下所示:如何设置运行JDK Netbeans?


您的Grizzly版本需要JAX-WS 2.2 API,而JDK 1.6随JAX-WS 2.1一起提供。 正如其他人提到的那样,这些文件中的一部分需要安装到经过认可的目录中。 您可以在这里下载所需的文件,或者从灰熊安装中取得它们。 下载内容包括一个Ant构建文件,该文件提供构建目标以将文件安装到JDK认可的目录中。 你可以用ant install-api来运行它。 如果您无法运行Ant,则可以手动安装它们:

cp lib/jaxb-api.jar $JAVA_HOME/lib/endorsed
cp lib/jaxws-api.jar $JAVA_HOME/lib/endorsed

除非您想为自己创建一些真正难以调试的错误,否则不要将JAX-WS发行版中的其他文件安装到已认可的目录中。

我建议使用$ JAVA_HOME / lib / endorsed中的背书目录,因为这可以与大多数工具和应用程序协同工作,而无需进行任何其他更改。 其他人已经提出了更有针对性的更改,例如在Maven构建期间设置背书目录或将文件复制到Tomcat认可的目录中。 所有这些方法都可以,只要您可以确保您的代码正在选择正确的背书目录。

链接地址: http://www.djcxy.com/p/11435.html

上一篇: java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName

下一篇: Manual creation of strings resource file not working with Application