2012-10-10 40 views
2

方案瞭解哪個罐子的類加載器爲特定應用程序中的tomcat6

我有哪裏春天是找到一類的兩個版本的情況。

org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [org.springframework.scheduling.quartz.SchedulerFactoryBean] is defined: expected single matching bean but found 2:

我的問題是找到其中重複類的來源。

通常,我只需要使用jdgui打開/反編譯web-inf/lib和tomcat/lib文件夾中的所有jar文件,並對重複的類進行類型搜索。

訣竅是我使用帶eclipse,maven和幾個戰爭項目的sysdeo插件,所以事情比這更復雜一點。

我的問題 是否有任何GUI或者說我可以用它來找到罐子的位置與的Tomcat6工作一類特殊的開源庫。

過去,我用IBM Websphere的管理控制檯使用了一個非常不錯的工具,它允許我瀏覽類加載器樹。

失敗的建議來自我的同行,我想我需要自己寫點東西。

+0

這是一個重複的*對象*你在那裏,而不是重複的*類*。檢查你的Spring bean配置。 – artbristol

+0

嗯。我會檢查什麼時候重新開始工作。我的猜測是,我的彈簧配置模塊被添加到戰爭,然後sysdeo添加目標/ classes文件夾。因此,有效的兩個複製彈簧配置在類路徑上觸發註釋掃描兩次,從而兩個對象。我的問題仍然是可視化類加載器。 – Tinman

回答

0

感謝評論的幫助,我能夠想出以下解決方案。

與我的Spring配置模塊被編譯成戰爭的lib文件夾(即/target/xxxx-war/WEB-INF/lib/myspringmodule.jar)

Sysdeo的Tomcat的文件夾配置添加/ myspringmodule/target/classes到classpath中,這樣我就可以在eclipse中簡單地重新編譯。這有效地在類路徑觸發註釋掃描兩次,因此兩個對象上添加兩個重複的彈簧配置。

我的解決方案是爲eclipse中的本地構建創建一個maven配置文件,用於排除這兩個jar。

相關問題