Eric Malalel
Eric Malalel

Reputation: 345

fix error java.lang.NoSuchMethodError: 'int io.jsonwebtoken.SignatureAlgorithm.getMinKeyLength()'

I develop under MyEclipse a Jersey Java REST API which runs under Tomcat 9.

This API uses JWT tokens and I use io.jsonwebtoken to manage what I need to make it work.

Everything is fine except when my API calls a function which generates this error:

java.lang.NoSuchMethodError: 'int io.jsonwebtoken.SignatureAlgorithm.getMinKeyLength()'
    at io.jsonwebtoken.security.Keys.hmacShaKeyFor(Keys.java:84)
    at com.knowledgeplaces.metalmsapi.utils.JWTUtils.createJWT(JWTUtils.java:18)

Here is the code of JWTUtils:

package com.knowledgeplaces.metalmsapi.utils;

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.JwtException;
import io.jsonwebtoken.security.Keys;
import io.jsonwebtoken.security.WeakKeyException;

import java.security.Key;
import java.nio.charset.StandardCharsets;
import java.util.Calendar;
import java.util.Date;
import java.util.UUID;

public class JWTUtils {
    public String createJWT(String issuer, Integer userId, String jwtSecretKey, Integer jwtExpirationMs) throws Exception {
        Key key;
        try {
            key = Keys.hmacShaKeyFor(jwtSecretKey.getBytes(StandardCharsets.UTF_8));
        } catch (WeakKeyException ex) {
            throw new Exception("invalidKPLMSCustomerConfigMetaLmsApiKey");
        }

And here is pom.xml:

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-api</artifactId>
            <version>0.11.2</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-impl</artifactId>
            <version>0.11.2</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson if Gson is preferred -->
            <version>0.11.2</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>

Any help appreciated.

Upvotes: 0

Views: 4178

Answers (1)

Eric Malalel
Eric Malalel

Reputation: 345

I removed the last dependency and it is fixed now.

     <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>

Upvotes: 5

Related Questions