2014-10-02 40 views
0

我想調試一個Java/Maven項目與很多依賴各種庫。 當我在Linux服務器上運行的程序精細啓動,但是當我嘗試在Eclipse中運行它,它會引發以下異常:NoSuchMethodError與駱駝RouteDefinition類

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.camel.model.RouteDefinition.getErrorHandlerBuilder()Lorg/apache/camel/ErrorHandlerFactory; 
at org.apache.camel.spring.spi.SpringTransactionPolicy.wrap(SpringTransactionPolicy.java:69) 
at org.apache.camel.model.PolicyDefinition.createProcessor(PolicyDefinition.java:133) 
at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:437) 
at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:183) 
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:817) 
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:165) 
at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:697) 
at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:1654) 
at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1441) 
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1338) 
at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:67) 
at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:54) 
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1316) 

現在,我可以看到RouteDefinition類是駱駝-core-2.9.3,jar和我可以看到這個庫被導入。那麼它怎麼會沒有看到這種方法呢?

我該如何去調試呢?

我可以從運行在Linux服務器上的進程獲取信息嗎?例如,我可以獲取導入的罐子的列表以及它們的導入順序嗎?

非常感謝!

+0

此庫是直接依賴項還是二手的?如果你看你的本地回購是2.9.3唯一的副本? – Floegipoky 2014-10-02 14:21:54

+0

我猜想二手貨。它不在我的項目的pom.xml中,但它是從其他項目繼承的。在Eclipse Maven依賴關係中,我只有2.9.3,但是如果我查看磁盤上的Maven存儲庫,我有許多其他版本(2.8.2,2.9.5等) – Gep 2014-10-02 14:36:29

+0

嘗試添加正確版本作爲直接依賴項在你的朋友,如果你還沒有 – Floegipoky 2014-10-02 14:41:53

回答

1

你得到的錯誤是由Maven拉錯版本引起的。嘗試刪除當地回購的所有版本,將其明確添加到您的pom中,清理所有版本,向日食神祈禱等等。如果它仍然給出錯誤,請檢查您的本地回購以查看哪些版本錯誤拉進來,弄清楚什麼取決於他們,併爲他們添加明確的忽略,同時保持明確的包括。