相同的包,两个Maven项目中的相同类WAR和JAR,类路径问题

时间:2013-10-16 00:11:31

标签: java maven jaxb cxf eclipse-classpath

我有一些类路径问题。我有一个Web应用程序,它是一个Web服务。它使用JaxB和CXF。 Web服务具有另一个JAR的依赖性,该JAR是Web服务客户端。现在,使用wsdl2java插件生成客户端和服务代码。问题看起来像这样:

Parent WebService WAR
--PackageA
  --ClassB
Dependency Jar
--PackageA
  --ClassB

因此,它们都具有相同的包和相同的类名,并且由于这些是由插件生成的,因此很难重构其中一个包以使它们不相同。 WebService调用客户端,并在客户端代码中从Web服务初始化父classB,而不是从Web服务客户端Jar初始化classB。这个ClassB中唯一的问题是它们有一个接受不同参数的方法,在一个B类中需要Date,而在另一个classB中需要XmlGregorianCalendar。因此,在调用客户端时,我得到了nosuchmethodexception。

这是我到目前为止没有运气的尝试:

1:在客户端jar中,我尝试提供完整的包和类名来初始化ClassB

2:在Client jar中,我尝试使用Spring bean连接类,但令人惊讶的是它仍然是从webService而不是客户端连接类

3:在Web服务ClassB中,我尝试添加采用正确参数的相同方法。这部分起作用,但导致另一个不好的例外。

期待您的帮助。谢谢!

解决这个问题,将额外的args传递给wsdl2java插件,同时根据 user2880879 建议从wsdl生成类:

<extraarg>-p</extraarg>
<extraarg>http://www.example.com=mypackagename</extraarg>  

1 个答案:

答案 0 :(得分:1)

我相信你是使用自上而下的方法创建web服务,意味着首先使用jaxws注释编写java类,然后使用cxf maven插件或ant创建wsdl,并使用此wsdl创建客户端?

如果您遵循此方法,则可以在生成Web服务客户端代码时提供绑定文件。 click here知道什么是绑定文件以及如何编写。

在此绑定文件中,您可以指定要为客户端代码更改的包名称。