2017-09-29 39 views
1

我有一個jar依賴問題,不知道如何解決它。eclipse中的Jar依賴 - 2個外部罐子中的相同類

HttpClientBuilder類位於我引用的庫中的兩個外部容器中。但是在一次日食挑選中,缺少一種方法。我認爲,因爲這個罐子裏面有所有的依賴庫,這個httpclient已經過時了。

是否有可能告訴eclipse爲HttpClientBuilder類選擇哪個外部jar?

Exception in thread "Thread-0" java.lang.NoSuchMethodError: org.apache.http.impl.client.HttpClientBuilder.setSSLHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)Lorg/apache/http/impl/client/HttpClientBuilder; 
    at org.telegram.telegrambots.bots.DefaultAbsSender.<init>(DefaultAbsSender.java:63) 
    at org.telegram.telegrambots.bots.TelegramLongPollingBot.<init>(TelegramLongPollingBot.java:35) 
    at org.telegram.telegrambots.bots.TelegramLongPollingBot.<init>(TelegramLongPollingBot.java:31) 
    at minerbot.CommandHandler.<init>(CommandHandler.java:9) 
    at minerbot.Main$CommandThread.run(Main.java:97) 
    at java.lang.Thread.run(Unknown Source) 

謝謝!

回答

0

如果你的項目沒有使用像maven,ant等軟件項目管理和理解工具,那麼你應該使用它,因爲它可以通過排除項目不需要的項目來幫助管理依賴項。

基本上,您可以排除項目不需要的依賴關係jar,這樣您就不會獲得不必要的傳遞依賴關係。

如果你想排除某些罐子裏只有類,那麼這裏有一個選擇。

Exclude classes from a dependency in Maven

下面是例子,排除不必要的依賴罐子(Maven的官方網站)...

https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

<project> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>sample.ProjectA</groupId> 
     <artifactId>Project-A</artifactId> 
     <version>1.0</version> 
     <scope>compile</scope> 
     <exclusions> 
     <exclusion> <!-- declare the exclusion here --> 
      <groupId>sample.ProjectB</groupId> 
      <artifactId>Project-B</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 
    </dependencies> 
</project> 

Maven的Eclipse插件安裝:

確認Eclipse的設置:

  • 打開窗口 - 首選項
  • 檢查Maven是在左側面板中列出,並在安裝
  • 檢查設置
  • 點擊現有項目並右鍵單擊選擇配置 - >轉換爲Maven項目
+0

好吧,我安裝了Maven的,但不知道如何使用它..我是否需要添加到pom.xml中,如果其值我想從外部jar「telegrambots-3.3-jar-with-dependencies.jar」中排除「org.apache.http.impl.client」 – nycrom

+0

你是否需要telegrambots-3.3-jar-with-dependencies中的任何其他類。 jar,如果它是一個傳遞依賴,那麼你可以完全從它被拉的形式的依賴中排除它。如果您需要該jar中的其他類,請嘗試將此jar放在您需要使用該類的另一個jar下面。 – JRG

+0

是的,我需要所有其他類。只有這個org.apache.http.impl.client。我加了 org.apache。httpcomponents HttpClient的 4.5.3 com.github.pengrad Java的電報殭屍API 3.3.0 所以它應該適合.. 。現在eclipse說它找不到類。我已經在Eclipse中選擇了「更新項目」,但它並沒有幫助... – nycrom