Исправьте путь к классу вашего приложения, чтобы оно содержало единую совместимую версию io.jsonwebtoken.Алгоритм подписи

#spring-boot #jjwt

#весенняя загрузка #jjwt

Вопрос:

У меня проблема. Пытался изменить версии (как написано в Интернете), но это не помогло.Я получаю эту ошибку при попытке развернуть проект с помощью docker composer

Проблема:

 The method's class, io.jsonwebtoken.SignatureAlgorithm, is available from the following 
 locations:
jar:file:/app/libs/jjwt-0.9.1.jar!/io/jsonwebtoken/SignatureAlgorithm.class
jar:file:/app/libs/jjwt-api-0.11.2.jar!/io/jsonwebtoken/SignatureAlgorithm.class
It was loaded from the following location:
    file:/app/libs/jjwt-0.9.1.jar
 

Консоль:


НЕ УДАЛОСЬ ЗАПУСТИТЬ ПРИЛОЖЕНИЕ


Описание:

Была предпринята попытка вызвать метод, который не существует. Попытка была предпринята из следующего местоположения:

 io.jsonwebtoken.security.Keys.hmacShaKeyFor(Keys.java:84)
 

Следующий метод не существует:

 io.jsonwebtoken.SignatureAlgorithm.getMinKeyLength()I
 

Класс метода, io.jsonwebtoken .Алгоритм подписи доступен в следующих местах:

 jar:file:/app/libs/jjwt-0.9.1.jar!/io/jsonwebtoken/SignatureAlgorithm.class
jar:file:/app/libs/jjwt-api-0.11.2.jar!/io/jsonwebtoken/SignatureAlgorithm.class
 

Он был загружен из следующего расположения:

 file:/app/libs/jjwt-0.9.1.jar
 

Экшен:

Исправьте путь к классу вашего приложения, чтобы оно содержало единую совместимую версию io.jsonwebtoken.Алгоритм подписи

Это мой pom.xml :

 <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-impl</artifactId>
        <version>0.11.2</version>
        <scope>runtime</scope>
    </dependency>

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

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

Комментарии:

1. Удалите артефакт jjwt. Согласно документации ( github.com/jwtk/jjwt#maven ) вам нужны только jjwt-api, jjwt-impl и jjwt-jackson

2. когда я удалил артефакт jjwt, я получаю ошибки в моем методе кода Jwts.parserBuilder() не найден, метод существует только в jjwt

3. Вероятно, метод был перемещен между версиями. Возможно, вам захочется удалить старый импорт после удаления зависимости jjwt, и ваша среда IDE может найти правильный новый импорт. Класс Jwts все еще существует, как и метод: github.com/jwtk/jjwt/blob/master/api/src/main/java/io /…

4. спасибо за ваш ответ, он работает для меня

5. Я предоставил ответ для правильного решения этой проблемы.

Ответ №1:

Согласно документации, вам нужны только следующие зависимости:

 <dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-impl</artifactId>
    <version>0.11.2</version>
    <scope>runtime</scope>
</dependency>

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

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-api</artifactId>
    <version>0.11.2</version>
</dependency>
 

Отсутствующий класс / метод все Jwts.parserBuilder() еще доступен, но, вероятно, был перемещен между версиями. Удаление импорта из класса и разрешение вашей IDE повторно импортировать его должно решить эту проблему.

(см. Комментарии под вопросом для уточнения контекста)