java - 使用 Web 服务部署 Web 应用程序后出现错误 "java.lang.NoSuchMethodError"

标签 java web-services servlets oc4j webproxy

我遇到了一个奇怪的问题,需要你的帮助。 我使用 oc4j 1013 作为 java 容器。 我有一个简单的 Web 服务“GetDates”,我在 oc4j 上成功部署了它,并通过调用其中的方法对其进行了测试,它成功返回值。 然后我使用 wsdl 为我的 Web 服务创建了一个 Web 服务代理,并且我从 jdeveloper 进行了测试,它也成功返回。 最后,我创建了一个 Web 应用程序,只是一个普通的 servlet,在其中我使用了之前刚刚完成的 Web 服务代理,并通过从 jdeveloper 运行它来测试它,它成功返回结果。 奇怪的是,当我决定将它部署在外部 oc4j 上(即用于 Web 服务的 oc4j),并调用 servlet 时,它通过了下面的异常。

java.lang.NoSuchMethodError: datespackage.runtime.GetDatesWS_getDateHence_ResponseStruct_LiteralSerializer.setSOAPVersion(Loracle/j2ee/ws/common/soap/SOAPVersion;)
at datespackage.runtime.GetDatesWS_getDateHence_ResponseStruct_LiteralSerializer.<init>(GetDatesWS_getDateHence_ResponseStruct_LiteralSerializer.java:37)
at datespackage.runtime.GetDatesService_SerializerRegistry.getRegistry(GetDatesService_SerializerRegistry.java:31)
at datespackage.runtime.GetDatesService_Impl.<init>(GetDatesService_Impl.java:26)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at oracle.j2ee.ws.client.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:92)
at oracle.j2ee.ws.client.ServiceFactoryImpl.loadService(ServiceFactoryImpl.java:121)
at datespackage.GetDatesWSSoapHttpPortClient.<init>(GetDatesWSSoapHttpPortClient.java:22)
at webproject.indexClass.doGet(indexClass.java:27)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:719)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:376)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:870)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:451)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:218)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:119)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
at com.evermind[Oracle Containers for J2EE 10g (10.1.3.0.0) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
at java.lang.Thread.run(Thread.java:619)

我感觉可能缺少一个 jar 或其他东西。

我正在使用 JDeveloper 1013 和 oc4j 1013 我使用的是 JDK 1.5

最佳答案

JAR 不太可能丢失,因为找到了类。它缺少特定方法或该方法的签名不同。通常,当您具有相同依赖项的不同版本(例如不同的 JAR)时,就会发生这种情况。如果类路径中有两个相同的类,则可能会发生这种情况。

关于java - 使用 Web 服务部署 Web 应用程序后出现错误 "java.lang.NoSuchMethodError",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16129624/

相关文章:

c# - 动态 C#.NET Web 服务

java - 还有其他创建 servlet 实例的方法吗?

java - 带有 URL 模式的 servlet 映射不起作用,必须使用 URL-servlet/servletclassname 才能使用 servlet

java - magento xmlrpc session 立即过期

java - 将值从 arrayList 传递到对象数组时出错

Java/Spring-Boot Web 应用程序不提供公共(public)资源目录中的 Assets

web-services - Web 浏览器如何知道请求的 url 是 https 还是 http

java - Spring - 如何从 Web 应用程序停止和启动 Web 服务?

java - JSP 中的自定义标签

java - JSP:具有相对路径的 FileReader 抛出 FileNotFoundException