java .lang.LinkageError: нарушение ограничения загрузчика для Spring MVC и Thymeleaf - PullRequest
0 голосов
/ 01 апреля 2020

Я создаю свое приложение, используя Spring MVC и Thymeleaf. Я также использую Log4j для ведения журнала. При вызове одного из сервисов, в который загружается шаблон Thymeleaf, я получаю следующую ошибку:

Handler dispatch failed; nested exception is java.lang.LinkageError: loader constraint violation: when resolving method "org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;" the class loader (instance of org/apache/catalina/loader/ParallelWebappClassLoader) of the current class, org/slf4j/LoggerFactory, and the class loader (instance of java/net/URLClassLoader) for the method's defining class, org/slf4j/impl/StaticLoggerBinder, have different Class objects for the type org/slf4j/ILoggerFactory used in the signature

Эта ошибка выдается при выполнении следующей строки кода:

ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();

Если я снова вызываю ту же службу (без внесения каких-либо изменений или перезапуска / очистки сервера), я получаю другую ошибку:

 Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.thymeleaf.templateresolver.ClassLoaderTemplateResolver

Файл конфигурации gradle:

compile group: 'org.thymeleaf', name: 'thymeleaf', version: '3.0.11.RELEASE'
compile group: 'org.thymeleaf', name: 'thymeleaf-spring4', version: '3.0.11.RELEASE'

Используемый сервер - Tomcat.

Любая помощь высоко ценится.

1 Ответ

0 голосов
/ 01 апреля 2020

Казалось бы, у вас есть файл jar slf4j как в загрузчике классов root, так и в файле WAR вашего веб-приложения. Попробуйте использовать maven, чтобы пометить его как «предоставленный», чтобы он не попадал в WAR. Тогда java не будет смущен тем, что одни и те же классы загружаются в несколько загрузчиков классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...