杰克逊错误: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-Valerio 3.1.0 请将您的pom.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;的主要内容,如果未能解决你的问题,请参考以下文章

Proguard导致杰克逊错误

启用 proguard 时出现杰克逊错误(缩小)

反序列化的改造/杰克逊错误

改造:用杰克逊反序列化失败,没有任何错误

杰克逊错误:没有适合简单类的构造函数

当我尝试反序列化对象列表时,杰克逊抛出错误映射异常