#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 повторно импортировать его должно решить эту проблему.
(см. Комментарии под вопросом для уточнения контекста)