我已经回顾了关于SO的其他相关问题,但没有找到我的问题的答案。
我正在从JBoss AS 7.11升级到Wildfly 8.2,并遇到了人们称之为“臭名昭着的WELD-001408
”问题。但是,我的情况似乎有所不同,因为据我所知,我们没有使用任何@Inject
注释或任何可能导致验证错误的内容。
下面的堆栈跟踪似乎表明该异常是由焊接验证器本身和限定符@Default
引起的。这对任何人都有意义吗?
我强调我的应用程序中既没有@Inject
也没有@Default
注释。所以,例外是神秘的。
有人能指出我正确的方向让我的应用程序在Wildfly 8.2中启动并运行吗?
如果需要任何其他信息,请询问,如果可能,我会提供。
感谢!!!
编辑[2015年5月12日]:
我想知道它是否与hibernate验证器有关?
来自pom.xml:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.3.Final</version>
<scope>runtime</scope>
</dependency>
我是否正确使用了hibernate验证器?是否需要提供一些配置?是否有其他验证器可以替代使用?
来自wildfly启动的堆栈跟踪:
11:21:57,196 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC000001: Failed to start service jboss.deployment.unit."search.war".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."search.war".WeldStartService: Failed to start service
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_21]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_21]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21]
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408:
** Unsatisfied dependencies for type Validator with qualifiers @Default
at injection point [UnbackedAnnotatedField] @Inject private **
org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor.validator
at org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor.validator(ValidationInterceptor.java:0)
WELD-001475: The following beans match by type, but none have matching qualifiers:
- ValidatorBean [id=org.hibernate.validator.internal.cdi.ValidatorBean_hv]
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:372)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:293)
at org.jboss.weld.bootstrap.Validator.validateInterceptor(Validator.java:569)
at org.jboss.weld.bootstrap.ConcurrentValidator$2.doWork(ConcurrentValidator.java:85)
at org.jboss.weld.bootstrap.ConcurrentValidator$2.doWork(ConcurrentValidator.java:83)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) [rt.jar:1.7.0_21]
at java.util.concurrent.FutureTask.run(FutureTask.java:166) [rt.jar:1.7.0_21]
... 3 more
答案 0 :(得分:1)
从JBoss EAP 6.2迁移后,我在Wildfly 9上遇到了完全相同的问题!和解决方法形式
https://issues.jboss.org/browse/WFLY-2708帮助了我。
因此,在 weld 子系统配置的活动standalone.xml
文件中:
<subsystem xmlns="urn:jboss:domain:weld:2.0"/>
添加属性 require-bean-descriptor =&#34; true&#34; ,它将如下所示:
<subsystem xmlns="urn:jboss:domain:weld:2.0" require-bean-descriptor="true"/>
答案 1 :(得分:1)
抱歉(我知道您正在使用JBoss或Wildfly),但我只是为使用Liberty或Websphere服务器的用户添加了这个答案,因为相同的消息&#34; WELD-001408: Unsatisfied dependencies for type Validator with qualifiers @Default
&# 34;也出现在这些服务器中。
无论如何,问题描述可以帮助您解决JBoss中的问题
问题描述
如果您的应用程序包含Validator.class类 (包括在内部jar文件中)Liberty可能会感到困惑 在应用程序的类文件和类之间 安装在自由内部的文件导致了 WELD-001408:类型Validator的不满意依赖项 限定符@Default例外。
我遇到了你的问题,但在 Liberty V16.0.0.3 中,我通过添加
修复了它 <cdi12 enableImplicitBeanArchives="false"/>
以下是描述问题和修复问题的链接 http://www-01.ibm.com/support/docview.wss?uid=swg1PI71667
BTW已在 Liberty V16.0.0.4(现在最新版本)中修复