我有一个 jar 依赖问题,不知道如何解决。
类 HttpClientBuilder 位于我引用的库中的两个外部 jar 中。但在一次 Eclipse 选择中,缺少一种方法。我想是因为这个 jars 里面有它所有的依赖库,而这个 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)
谢谢!!
最佳答案
如果您的项目没有使用 maven、ant 等软件项目管理和理解工具,那么您应该使用它,因为它可以通过排除项目不需要的依赖项来帮助管理依赖项。
基本上,您可以排除项目不需要的依赖项 jar,这样就不会获得不必要的传递依赖项。
如果您只想从某些 jar 中排除类,那么这里是一个选项。
Exclude classes from a dependency in Maven
这里是排除不必要的依赖jar的示例(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 IDE 并单击“帮助 - 安装新软件”
- 单击添加按钮,然后在弹出窗口中填写名称“M2Eclipse”,位置填写“http://download.eclipse.org/technology/m2e/releases”或http://download.eclipse.org/technology/m2e/milestones/1.0
- 点击“确定”并等待安装完成
确认 Eclipse 设置:
- 打开窗口 - 偏好设置
- 检查左侧面板中是否列出了 Maven,并检查安装中的设置
- 单击现有项目并右键单击选择“配置”->“转换为 Maven 项目”
关于java - Eclipse 中的 Jar 依赖项 - 2 个外部 jar 中的同一类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46482185/