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

Grizzly-java.lang.NoSuchMethodError:javax.xml.ws.WebFault.messageName,java,web-services,soap,grizzly,Java,Web Services,Soap,Grizzly,我有一个Web服务的wsdl文件。我想测试客户端和服务器之间的交互。为此,我使用嵌入式grizzly运行模拟服务器 关于实现模拟服务器的问题。我使用wsimport和编写的实现从wsdl(和xsd)生成了一个接口。在grizzly上运行时,出现以下错误: com.sun.xml.ws.server.ServerRtException: [failed to localize] cannot.load.wsdl(META-INF/wsdl/test.wsdl) 我使用以下代码运行web服务:

我有一个Web服务的wsdl文件。我想测试客户端和服务器之间的交互。为此,我使用嵌入式grizzly运行模拟服务器

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

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");
问题是Grizzly找不到wsdl和xsd文件。在它的作品中

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

java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName()Ljava/lang/String;
编辑2
如果使用JDK1.7,它就可以工作。但是我需要一个JDK1.6,我不知道你为什么会看到这个错误。我可以运行Grizzly jaxws示例,并使用1.6或1.7获取wsdl


我建议查看示例的来源,并与您拥有的进行比较。

因此,我们必须使用认可的机制

我正在将jdk6更改为jdk7,效果很好!不要忘记更改JAVA_HOME和Netbeans的默认JDK,如下所示:

创建一个名为annowned的文件夹,并将这些jar文件放在其中 1.jaxb-api-2.2.jar 2.jaxws-api.jar 将文件夹作为一个文件夹放在tomcat服务器中 C:\tomcat-7.50\
并运行它将正常工作

您的Grizzly版本需要JAX-WS2.2API,而JDK1.6附带JAX-WS2.1。正如其他人提到的,这些文件中的一些需要安装到一个认可的目录中。您可以下载所需的文件或从Grizzly安装中获取它们。下载包括一个Ant构建文件,该文件提供了一个构建目标,用于将文件安装到JDK认可的目录中。您可以使用
ant安装api
运行它。如果无法运行Ant,可以手动安装:

cp lib/jaxb-api.jar $JAVA_HOME/lib/endorsed
cp lib/jaxws-api.jar $JAVA_HOME/lib/endorsed
不要将JAX-WS发行版中的其他文件安装到认可的目录中,除非您想为自己创建一些真正难以调试的bug


我建议使用$JAVA_HOME/lib/annocated中的annocated目录,因为这将适用于大多数工具和应用程序,而无需进行任何其他更改。其他人已经建议进行更有针对性的更改,例如在Maven构建期间设置一个认可的目录,或者将文件复制到Tomcat认可的目录中。所有这些方法都是好的,只要你能确保你的代码选择正确的被认可的目录。

将JDK从1.6改为1.7对我来说很有效