1

我一直在Eclipse中使用Web服务挣扎了一段时间。每当我找到工作时,它似乎只是基于运气,我已经以各种方式尝试了一切。使用Axis2的Eclipse中的Webservices:ClassNotFoundException

我最近的问题涉及以下几点: 我有一个使用大量外部引用(罐子)的Java应用程序。 我已经使用Fat-jar插件(http://fjep.sourceforge.net/)将此Java项目导出到一个简单的jar文件,以确保导出的jar包含所有需要的资源。 然后我创建了一个动态Web项目,并将之前添加的jar添加到此项目中。 当我做一些基本的测试时,一切正常,即Eclipse找到所有需要的引用。

但是,当我尝试创建一个Web服务,其方法使用与测试完全相同的逻辑时,出现错误。 我不明白为什么我得到一个ClassNotFoundException,因为像我之前说过的那样,在进行本地测试时,Eclipse会查找所有需要的资源。

[INFO] Deploying module: addressing-1.6.1 - file:/C:/Users/Flamant/My  master/code/WorkspaceEclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/wtpwebapps /org.openmarkov.webservice.engine/WEB-INF/modules/addressing-1.6.1.mar 
[INFO] Deploying module: metadataExchange-1.6.1 - file:/C:/Users/Flamant/My  master/code/WorkspaceEclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/wtpwebapps /org.openmarkov.webservice.engine/WEB-INF/modules/mex-1.6.1.mar 
[INFO] Deploying module: mtompolicy-1.6.1 - file:/C:/Users/Flamant/My  master/code/WorkspaceEclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/wtpwebapps /org.openmarkov.webservice.engine/WEB-INF/modules/mtompolicy-1.6.1.mar 
[INFO] Deploying module: ping-1.6.1 - file:/C:/Users/Flamant/My  master/code/WorkspaceEclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/wtpwebapps /org.openmarkov.webservice.engine/WEB-INF/modules/ping-1.6.1.mar 
[INFO] Deploying module: script-1.6.1 - file:/C:/Users/Flamant/My  master/code/WorkspaceEclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/wtpwebapps /org.openmarkov.webservice.engine/WEB-INF/modules/scripting-1.6.1.mar 
[INFO] Deploying module: soapmonitor-1.6.1 - file:/C:/Users/Flamant/My  master/code/WorkspaceEclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/wtpwebapps /org.openmarkov.webservice.engine/WEB-INF/modules/soapmonitor-1.6.1.mar 
[INFO] The Engine service, which is not valid, caused java.lang.NoClassDefFoundError:  [Lorg/openmarkov/webservice/Finding; 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
at java.lang.Class.privateGetPublicMethods(Unknown Source) 
at java.lang.Class.getMethods(Unknown Source) 
at org.apache.axis2.description.java2wsdl.bytecode.MethodTable.loadMethods(MethodTable.java:43) 
at org.apache.axis2.description.java2wsdl.bytecode.MethodTable.<init>(MethodTable.java:33) 
at org.apache.axis2.description.java2wsdl.DefaultSchemaGenerator.<init>(DefaultSchemaGenerator.java:141) 
at org.apache.axis2.deployment.util.Utils.fillAxisService(Utils.java:453) 
at org.apache.axis2.deployment.ServiceBuilder.populateService(ServiceBuilder.java:389) 
at org.apache.axis2.deployment.repository.util.ArchiveReader.buildServiceGroup(ArchiveReader.java:101) 
at org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:178) 
at org.apache.axis2.deployment.ServiceDeployer.deploy(ServiceDeployer.java:82) 
at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136) 
at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:813) 
at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144) 
at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:370) 
at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254) 
at org.apache.axis2.deployment.DeploymentEngine.loadServices(DeploymentEngine.java:142) 
at org.apache.axis2.deployment.WarBasedAxisConfigurator.loadServices(WarBasedAxisConfigurator.java:283) 
at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:95) 
at org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:584) 
at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:454) 
at org.apache.axis2.webapp.AxisAdminServlet.init(AxisAdminServlet.java:60) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1228) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1147) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1043) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957) 
at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284) 
at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279) 
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: org.openmarkov.webservice.Finding 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523) 
... 34 more 

[INFO] org.apache.axis2.deployment.DeploymentException: java.lang.NoClassDefFoundError:  [Lorg/openmarkov/webservice/Finding; 
[INFO] Deploying Web service: version.aar - file:/C:/Users/Flamant/My master/code/WorkspaceEclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/wtpwebapps/org.openmarkov.webservice.engine/WEB-INF/services/version.aar 
[WARN] No transportReceiver for org.apache.axis2.transport.http.AxisServletListener found. An instance for HTTP will be configured automatically. Please update your axis2.xml file! 
apr 11, 2012 10:51:45 AM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-8081"] 
apr 11, 2012 10:51:45 AM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-bio-8010"] 
apr 11, 2012 10:51:45 AM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 1928 ms 

如果有人有一个想法,我将不胜感激。

感谢, 托马斯

+0

你如何创建Web服务?你正在使用哪个axis2版本? – shashankaholic 2012-04-11 14:27:11

回答

0

你的意思是,当在Eclipse环境中Web服务工作正常,但在你的动态Web项目不能正常工作?你的动态web项目中缺少jar吗?

+0

不,在动态web项目中,我制作了一个“测试”包,用于从导入的.jar文件中调用方法。这些都很好。只有当我尝试创建一个web服务(来自一个类,使用与测试包中的测试完全相同的逻辑)时,才会发生错误。 – user1211204 2012-04-11 10:16:13

+0

如果所有需要的jar都存在,请检查是否有可能存在jar冲突。 – snow8261 2012-04-12 09:35:15

1

其实,你所面对的NoClassDefFoundError,当在运行时没有找到所需要的库发生...检查库是在运行时类路径..

+0

感谢您的回复。我的确得出了同样的结论。但是,我仍然不知道如何解决这个问题。我已经将所有需要的.jars和项目添加到:(1)lib目录,(2)属性中的Java Build路径和(3)属性中的部署程序集。 – user1211204 2012-04-12 09:12:21

+0

嗨,在你的运行时类路径添加库...转到项目视图特定的类/项目右键单击 - >运行 - >运行配置 - >设置类路径那里(添加罐子那里) – Ratha 2012-04-12 10:33:58

0

确保ATLEAST这些 激活1.1.jar, axiom-api-1.2.8.jar, axiom-dom-1.2.8.jar, axiom-impl-1.2.8.jar, axis2-adb-1.5.1.jar, axis2-kernel-1.5 .jar, axis2-transport-http-1.5.1.jar, axis2-transport-local-1.5.1.jar, commons-codec-1.3.jar, commons-fileupload-1.2。罐子, 公地httpclient的-3.1.jar, 共享记录-1.1.1.jar, Geronimo的StAX的api_1.0_spec-1.0.1.jar, 的HttpCore-4.0.jar, 邮件1.4.jar , neethi-2.0.4.jar, 沃登-API-1.0M8.jar, 沃登-IMPL-DOM-1.0M8.jar, WSDL4J-1.6.2.jar, wstx-ASL-3.2.4。罐子, XmlSchema-1.4.3.jar

0

我也遇到过这个问题。在我的情况下,我没有在[1]文章中明确地遵循步骤。在步骤12中,不要更改“服务项目”名称。

+1

请添加更多细节到您的答案,而不是引用外部链接。 – 2014-03-02 11:48:32