集成Twilio SMS API到Java项目时报java.lang.NoSuchFieldError: INSTANCE错误求助
Twilio SMS API集成报错
java.lang.NoSuchFieldError: INSTANCE解决方案 错误根因
这个错误是Apache HttpClient依赖版本冲突导致的:单独运行测试代码时,环境中只有Twilio SDK自带的匹配版本的HttpClient相关包,运行正常;集成到现有项目后,项目里已经存在的低版本httpcore、httpclient包被优先加载,低版本的org.apache.http.impl.io.DefaultHttpRequestWriterFactory类中没有INSTANCE静态字段,最终触发该错误。
修复步骤
- 排查项目中所有Apache Http组件相关jar包,包括
httpcore、httpclient、httpmime等,删除所有版本低于4.5的旧包。 - 如果你用Maven/Gradle管理依赖,直接排除其他第三方依赖传递引入的低版本Http组件,显式声明与Twilio SDK匹配的版本即可,Maven配置参考:
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.14</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.16</version> </dependency>
- 如果你是手动导入jar包,直接将项目中旧的Http组件包替换为Twilio SDK配套的同版本包即可。
- 清理项目编译缓存,重新打包部署后即可正常运行。
内容的提问来源于stack exchange,提问作者Jaehyuck Choi
相关产品推荐
相关产品推荐

