杰克逊错误:java.lang.NoSuchMethodError:`com.fasterxml.jackson.databind.JsonNode.asText(Ljava/lang/String;
Posted
技术标签:
【中文标题】杰克逊错误:java.lang.NoSuchMethodError:`com.fasterxml.jackson.databind.JsonNode.asText(Ljava/lang/String;)Ljava/lang/String`【英文标题】:Jackson Error : java.lang.NoSuchMethodError: `com.fasterxml.jackson.databind.JsonNode.asText(Ljava/lang/String;)Ljava/lang/String` 【发布时间】:2018-01-16 00:09:31 【问题描述】:我尝试验证 JWT 身份验证令牌,
JWTVerifier verifier = JWT.require(Algorithm.HMAC256("secret")).withIssuer("siat").build();
String token=httpRequest.getParameter("token");
DecodedJWT decodedJWT = verifier.verify(token);
以下是异常堆栈跟踪:
java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.JsonNode.asText(Ljava/lang/String;)Ljava/lang/String;
【问题讨论】:
您使用的是哪个版本的 java-jwt? @KDavid-Valeriopom.xml
添加到问题中。
【参考方案1】:
检查你的依赖图是否拉取了正确的版本 Jackson-databind jar
它抱怨的方法在 jackson-databind.jar
的 2.4.0 版本中可用如果您的类路径中有旧版本的 jar,那么它将无法提供所需的方法。
【讨论】:
感谢您的回答。问题是我的 POM 文件中的依赖项与 GlassFish 模块之间存在冲突。 @CHHIBIAMOR 乐于助人 Glassfish 依赖也是我的问题:glassfish-embedded-all。【参考方案2】:如果您检查任何 maven 存储库中的 java-jwt 依赖项,例如在 MVN Repository 中,您将在编译依赖项之间选择所需的 jackson-databind 版本(即引发 java.lang.NoSuchMethodError 异常的版本) )。
在您的情况下,对于 java-jwt 3.1.0 版本,您必须拥有 jackson-databind 版本 2.8.4 或新的 2.9.0。
【讨论】:
以上是关于杰克逊错误:java.lang.NoSuchMethodError:`com.fasterxml.jackson.databind.JsonNode.asText(Ljava/lang/String;的主要内容,如果未能解决你的问题,请参考以下文章