2016-09-09 8 views
0

Я работаю над проектом, в котором мы используем Spring и Spring Security.Неверная совместимость версий версий

Наша текущая версия весны - 4.0.6.RELEASE, а наша версия безопасности для весны - 4.0.0.M1. Я пытаюсь перейти на более высокую версию Spring Security 4.0.2 Release, но когда я запускаю свое веб-приложение, некоторые функции вызывают NoSuchMethodError. Я читал, что это может быть несовместимость версий. Мой вопрос в том, что является лучшей версией текущей версии для Spring?

+1

Конечно, новейшие API безопасности будут лучшими, это просто здравый смысл, так как это последняя версия. Но если вы получаете эти ошибки, вы должны найти stacktrace при запуске и посмотреть, какой метод вы используете, который не может быть в используемом вами API. Это также помогает использовать STS/Eclipse, потому что в основном это укажет на эти зависимости для вас. – px06

+3

Приложение 'RELEASE' рекомендуется. Другие версии находятся в процессе разработки и могут быть нестабильными. –

+0

Нашли решение! –

ответ

2

Весенняя безопасность будет скомпилирована и построена на специальной версии Spring. Ниже приведена совместимая версия Spring Security с версией Spring.

Spring security 4.0.2.RELEASE is built on Spring version 4.3.2.RELEASE 
Spring security 4.0.1.RELEASE is built on Spring version 4.3.2.RELEASE 
Spring security 4.0.0.RELEASE is built on Spring version 4.1.6.RELEASE 

В вашем случае, в качестве Spring версии 4.0.6.RELEASE, так что вы не должны обновить версию Spring Security еще вы можете получить ошибки как NoClassDefFound или NoSuchMethod.

Фактически вы должны использовать версию Spring Security как 3.2.9.RELEASE.

0

Проблема заключалась в том, что у меня есть следующая зависимость для Spring Security:

spring-security-web 
spring-security-config 
spring-security-taglibs 
spring-security-test 

Этот зависимостями установлен по умолчанию spring-security-core по умолчанию версии 3.2.4.RELEASE, которая не имеет все методы, которые используют более высокие методы Spring Security.

Решение должно добавить spring-security-core зависимости, которые переопределяют версию по умолчанию.