forked from chanjarster/weixin-java-tools
-
-
Notifications
You must be signed in to change notification settings - Fork 8.5k
NoClassDefFoundError、NoSuchMethodError或ClassNotFoundException等异常的解决办法
wang727179528 edited this page Jun 27, 2022
·
10 revisions
- 先找到对应方法或类所在的jar包,通过在
IDE
开发环境或在线搜索均可轻易获得; - 确认对应jar包是否确实已经部署到运行时环境中;
- 检查本地项目对应的jar包版本,是否与本SDK所依赖的版本(【点此处查看pom文件】)一致,一般来说是由于部分jar包版本过低导致;
- 最常见的是:
httpclient
、commons-lang3
、xstream
等第三方jar包的版本过老,请检查并核实; - 还有一种情况是,你项目里使用了
WxJava
的多个模块,但是彼此版本不同,比如如果你是用了3.1.0
的weixin-java-pay
模块,同时使用了3.6.0
的weixin-java-mp
模块,就有可能会导致weixin-java-commmon
版本不一致,从而出现部分方法或类找不到,解决办法:使用同一版本即可。 - 手动在自己项目的
pom
文件中指定对应jar
包maven
依赖和正确的版本号。 - resources目录下没有证书apiclient_cert.p12
String encType = request.getParameter("encrypt_type");
String nonce = request.getParameter("nonce");
String timestamp = request.getParameter("timestamp");
String msgSignature = request.getParameter("msg_signature");
String signature = request.getParameter("signature");
String openid = request.getParameter("openid");
log.info("接收微信请求:[openid=[{}], [openid=[{}],[signature=[{}], encType=[{}], msgSignature=[{}],"
+ " timestamp=[{}], nonce=[{}], requestBody=[{}] ",
appid, openid, signature, encType, msgSignature, timestamp, nonce, requestBody);
// 请求里面没有对应信息。 // if (!this.wxMpService.switchover(appid)) { //appid // throw new IllegalArgumentException(String.format("未找到对应appid=[%s]的配置,请核实!", appid)); // }
if (!wxMpService.checkSignature(timestamp, nonce, signature)) {
throw new IllegalArgumentException("非法请求,可能属于伪造的请求!");
}
return ResponseEntity.ok("");