java.lang.NoSuchMethodError:问题的发现与解决

本文记录了解决使用阿里云SDK下载文件时遇到的jar包冲突问题的过程。通过定位到冲突的SSLConnectionSocketFactory类,并对比不同版本的httpclient包,最终确定保留最新版本并移除旧版本的方法解决了问题。
部署运行你感兴趣的模型镜像

今天在使用阿里云的sdk下载文件的时候运行时爆出:

十一月 20, 2017 4:27:30 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [merAgentMgr] in context with path [/merAgentMgr] threw exception [Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.http.conn.ssl.SSLConnectionSocketFactory.<init>(Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/HostnameVerifier;)V] with root cause
java.lang.NoSuchMethodError: org.apache.http.conn.ssl.SSLConnectionSocketFactory.<init>(Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/HostnameVerifier;)V
at com.aliyun.oss.common.comm.DefaultServiceClient.createHttpClientConnectionManager(DefaultServiceClient.java:244)
at com.aliyun.oss.common.comm.DefaultServiceClient.<init>(DefaultServiceClient.java:85)
at com.aliyun.oss.OSSClient.<init>(OSSClient.java:295)

at com.aliyun.oss.OSSClient.<init>(OSSClient.java:216)


这种问题我们知道是最恶心的jar包冲突系列的,这次处理的很麻利,总结一下,有问题大家可以指正,一起探讨:

首先搜索jar包中的报错类,也就是SSLConnectionSocketFactory

查看一下都有什么包中有这个类,我当时有三个包分别是httclient4.3.3,httpclient4.3.5,和httpclient4.4.1

查看一下都是否有这个构造方法,发现全部都有。

尝试删除了4.4.1,发现其他地方报错了。得出结论尽量别删除新版本的包

一次删掉其他两个包,问题解决,保留4.4.1

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

当 `java.lang.RuntimeException` 中包含 `java.lang.NoSuchMethodError: com.wondersgroup.ehrview.ordos` 错误时,可采用以下方法解决: ### 检查类版本一致性 确保项目中使用的 `com.wondersgroup.ehrview.ordos` 相关类版本一致。不同版本的类文件可能存在方法定义差异,若编译和运行时使用的类版本不一致,就会引发该错误。检查依赖库,确保所有依赖使用相同版本的相关类。 ### 清理和重新构建项目 有时,编译产生的旧类文件可能会导致问题。在 Eclipse 中,可选择 `Project` -> `Clean`,清理项目并重新构建。 ### 检查方法签名 确保相关类中确实存在被调用的方法,且方法签名(包括方法名、参数类型和返回类型)一致。例如,若调用 `getStarttime()` 方法,需保证类中有该方法且返回类型为 `String`: ```java package com.wondersgroup.ehrview.ordosrequest; public class CommonReq { private String starttime; public String getStarttime() { return starttime; } public void setStarttime(String starttime) { this.starttime = starttime; } } ``` ### 检查类路径 确认类路径中没有重复或冲突的类。不同的 jar 包可能包含相同类名的类,这会导致运行时混淆。可通过查看项目的构建路径(`Build Path`)来检查类路径。 ### 检查依赖冲突 使用 Maven 或 Gradle 等构建工具时,可能存在依赖冲突。可使用构建工具的依赖分析功能,找出并排除冲突的依赖。例如,在 Maven 中可使用以下命令查看依赖树: ```bash mvn dependency:tree ``` ### 检查代码修改和部署情况 若修改了类的方法签名(如返回值类型、参数类型等),需确保所有引用该类的代码都重新编译和部署。否则,可能会出现 `NoSuchMethodError` 错误 [^4]。 ### 检查是否存在同包同名类 查找项目中是否存在同包同名的类,这可能会导致调用的类并非预期的类。可使用 IDE 的全局搜索功能(如 Eclipse 中的 `Ctrl + Shift + T`)查找相关类 [^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值