2017-04-18 36 views
0

我有一個小問題。我一直試圖使用不同的庫來生成JSON令牌,現在我正在使用Stormpath中的JJWT。他們有教程很好地解釋。但我的問題是,當我嘗試在「public static void main」方法中運行String方法時,出現運行時錯誤或類錯誤。在他們的官方網站上說有一個要求,傑克遜庫必須比2.8版更新。所以我下載了這樣的庫。運行JJWT Json令牌運行時或類錯誤

這裏我的源代碼:

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

正如你可以看到傑克遜的依賴似乎是精細。

此外,我還在參考庫上建立了更多的libreries,但它們不在pom.xml中。

我該怎麼做?

謝謝

回答

0

我回答自己,所以也許有人可能會有同樣的問題。

我一直在這個問題一個月左右,直到我有球刪除位於我的項目中的一些舊圖書館。

這個問題似乎是我聲明瞭傑克遜2.8.2或更高版本以及'參考庫'中的Maven依賴性,當我從Build-Path中刪除問題時,我的庫已經低於1.9。現在我可以看到String Token。

This is the picture with the problem solved.

謝謝。