簡體   English   中英

兩個Maven項目中的相同包,相同類,WAR和JAR,類路徑問題

[英]Same Package, Same Class in two Maven Projects a WAR and a JAR, classpath issue

我遇到一些類路徑問題。 我有一個Web應用程序,它是一個Web服務。 它使用JaxB和CXF。 該Web服務依賴於另一個JAR,后者是Web Service客戶端。 現在,使用wsdl2java插件生成了客戶端代碼和服務代碼。 問題看起來像這樣:

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

因此,它們都具有相同的程序包和相同的類名,並且由於它們是由插件生成的,因此很難重構其中一個程序包,以使它們不相同。 WebService調用客戶端,並在客戶端代碼中初始化Web服務中的父classB而不是Web服務客戶端Jar中的classB。 這個ClassB的唯一問題是,他們有一個方法采用differnet參數,在一個B類中它采用Date而在另一個B類中它采用XmlGregorianCalendar 因此,在致電客戶時,我收到了nosuchmethodexception。

這是我到目前為止沒有碰到的嘗試:

1:在客戶端jar中,我嘗試提供完整的程序包和類名稱以初始化ClassB

2:在客戶端jar中,我嘗試使用Spring bean來連接類,令人驚訝的是,它仍然從webService而不是客戶端來連接類

3:在Web服務ClassB中,我嘗試添加帶有正確參數的相同方法。 這部分起作用,但會導致另一個異常,這是不好的。

期待您的幫助。 謝謝!

通過將額外的args傳遞給wsdl2java插件,同時根據每個user2880879建議從wsdl生成類, 解決了該問題:

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

我相信您正在使用自上而下的方法創建Web服務,這意味着首先使用jaxws注釋編寫Java類,然后使用cxf maven插件或ant創建wsdl,並使用此wsdl創建客戶端?

如果您采用這種方法,則可以在生成Web服務客戶端代碼時提供綁定文件。 單擊此處了解什么是綁定文件以及如何編寫。

在此綁定文件中,您可以指定要為客戶端代碼更改的程序包名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM