Мы переносим несколько старых систем, написанных на Java 5, 6 и 7, на Java 8 и с JBoss 7 на Wildfly 14. После миграции я постоянно получаю такую ошибку:
WELD-001408: Unsatisfied dependencies for type InterfaceTypeConverterProvider with qualifiers @Named
Я понимаю, что с CDI 1.2 все изменилось, и @Inject не работает, как раньше, и требует некоторого рефакторинга.Я получил много таких ошибок, некоторые из них являются классами в моем собственном проекте, которые пытаются внедрить другие классы также внутри моего проекта, те, которые я могу исправить.
Проблема в том, что мой проект загружает некоторые классы, которые пытаютсявнедрить другие классы извне, это зависимости jar, которые я не могу контролировать и не могу изменить код этих jar.
Например:
11:15:54,552 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.deployment.unit."myApp-war-9.2-JAVA8-SNAPSHOT.war".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."myApp-war-9.2-JAVA8-SNAPSHOT.war".WeldStartService: Failed to start service at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1728)
at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1556)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 46 exceptions:
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type InterfaceTypeConverterProvider with qualifiers @Named
at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedMethod] @Inject public thirdPartJar.converter.context.AbstractConverter.setTypeConverterProvider(@Named InterfaceTypeConverterProvider)
at thirdPartJar.converter.context.AbstractConverter.setTypeConverterProvider(AbstractConverter.java:0)
WELD-001475: The following beans match by type, but none have matching qualifiers:
- Managed Bean [class thirdPartJar.converter.context.TypeConverterProvider] with qualifiers [@Any @Default]
Ошибкапоказывает проблему в классе thirdPartJar.converter.context.AbstractConverter , и я не могу коснуться кода на этом ... так, что я должен сделать?Можно ли понизить версию Wildfly Weld или заставить его использовать более старую версию CDI?
Это мой файл beans.xml со всем обнаружением, но он все еще не может найти реализации.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.2" bean-discovery-mode="all">
</beans>