运行JJWT JSON令牌的运行时或类错误



我有一个小问题。我一直在尝试使用不同的库来生产JSON令牌,现在我正在使用Stormpath的JJWT。他们的教程很好。但是我的问题是,当我尝试以"公共静态空白"方法运行字符串方法时,我会收到运行时或类错误。在他们的官方网站上说,杰克逊图书馆必须比2.8版更新。所以我下载了这样的图书馆。

在这里我的源代码:

package org.comunidadIT.proyecto.accesoDatos;
import java.security.Key;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.impl.crypto.MacProvider;
public class ValidarToken {
    public String token(){
        // We need a signing key, so we'll create one just for this example. Usually
        // the key would be read from your application configuration instead.
        Key key = MacProvider.generateKey();
        String compactJws = Jwts.builder()
          .setSubject("Joe")
          .signWith(SignatureAlgorithm.HS512, key)
          .compact();
        return compactJws;
    }
    public static void main(String args[]){
        ValidarToken t= new ValidarToken();
        System.out.println(t.token());
    }
}

控制台显示以下错误消息:

Exception in thread "main" java.lang.NoSuchFieldError: USE_DEFAULTS
at com.fasterxml.jackson.annotation.JsonInclude$Value.<clinit>(JsonInclude.java:204)
at com.fasterxml.jackson.databind.cfg.MapperConfig.<clinit>(MapperConfig.java:44)
at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:549)
at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:465)
at io.jsonwebtoken.impl.DefaultJwtBuilder.<clinit>(DefaultJwtBuilder.java:42)
at io.jsonwebtoken.Jwts.builder(Jwts.java:116)
at org.comunidadIT.proyecto.accesoDatos.ValidarToken.token(ValidarToken.java:16)
at org.comunidadIT.proyecto.accesoDatos.ValidarToken.main(ValidarToken.java:27)

来自Maven依赖的图像,Jackson似乎很好

带有erros的控制台的图像

您可以看到杰克逊依赖项似乎很好。

我也将更多的库放在参考库的构建路径上,但它们来自pom.xml。

我做错了什么?

谢谢

我回答自己,所以也许有人可能会有同样的问题。

我已经解决了这个问题,大约一个月,直到我得到球来删除项目中的一些旧图书馆。

问题似乎是我宣布了与杰克逊2.8.2或更高版本和"参考库"中的Maven依赖,当我从构建路径中删除时,我的库降低了。现在我可以看到字符串令牌。

这是解决问题的图片。

谢谢。

将此依赖关系添加到您的pom.xml文件中以解决问题:(

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-jackson</artifactId>  
    <version>0.11.1</version>
    <scope>runtime</scope>
</dependency>

添加项目依赖项'io.jsonwebtoken:jjwt-jackson:0.11.2'将解决该问题,因为它包含了您所需的内容(根据我对Berlot83答案的评论(。/p>

也最好检查更新版本(当然与其他依赖关系兼容(,因为保持更新总是明智的。

相关内容

最新更新