【问题标题】:Runtime or class error running JJWT Json Token运行 JJWT Json Token 的运行时或类错误
【发布时间】:2017-04-18 11:30:18
【问题描述】:

我有一个小问题。我一直在尝试使用不同的库来生成 json 令牌,现在我正在使用 Stormpath 的 JJWT。他们有很好解释的教程。但我的问题是,当我尝试在“public static void main”方法中运行 String 方法时,出现运行时或类错误。在他们的官方网站上说有一个要求杰克逊库必须比版本 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)

Image from maven dependencies where appears to be fine with jackson

Image from the console with erros

如您所见,jackson 依赖项似乎很好。

我还在参考库的构建路径中添加了更多库,但它们在 pom.xml 之外。

我做错了什么?

谢谢

【问题讨论】:

    标签: java token


    【解决方案1】:

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

    我已经遇到这个问题大约一个月了,直到我有勇气删除我项目中的一些旧库。

    问题似乎是我用杰克逊 2.8.2 或更高版本声明了一个 Maven 依赖项,并且在“参考库”中我的库低于 1.9,当我从构建路径中删除时,问题就消失了。现在我可以看到字符串令牌了。

    This is the picture with the problem solved.

    谢谢。

    【讨论】:

    • 对我来说,我只是忘记添加项目依赖项'io.jsonwebtoken:jjwt-jackson:0.11.2'
    猜你喜欢
    • 2020-05-10
    • 2021-12-20
    • 2018-03-08
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    相关资源
    最近更新 更多