【问题标题】:CDI / Weld Unsatisfied dependencies problem [duplicate]CDI / Weld不满意的依赖问题[重复]
【发布时间】:2013-07-25 16:54:19
【问题描述】:

我有一个奇怪的 CDI / Weld 问题,我无法找到解决方案。

我刚刚安装了 GlassFish 4,打算将我们的主要产品移到它上面,但是当我尝试部署它时,我在日志文件中看到了下面显示的堆栈跟踪(并且部署失败)。

这是一个成熟的应用程序,在多个位置用于 GlassFish 3.1.x 的生产,所以我知道代码很好(至少在 JEE6 上)。

我什至不知道从哪里开始寻找这个,因为堆栈跟踪甚至没有靠近我的任何代码。我查找了ValidationInterceptor 类的源代码,显然错误消息中提到的Validatorjavax.validation.Validator 类型,但这无济于事,因为我没有在我的代码中实现该接口。

感谢您提供有关在哪里查看/如何解决此问题的任何指示。

WARNING:   The following warnings have been detected: WARNING: Parameter 1 of type javax.enterprise.inject.spi.Bean<?> from public static void org.apache.myfaces.extensions.cdi.jsf.impl.util.WeldCache.setBean(javax.enterprise.inject.spi.Bean<?>) is not resolvable to a concrete type.

SEVERE:   Exception during lifecycle processing
org.glassfish.deployment.common.DeploymentException: CDI deployment failure: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.glassfish.weld.WeldDeployer.event(WeldDeployer.java:225)
    at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:131)
    at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:328)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:493)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:356)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
    at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:297)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
    at java.lang.Thread.run(Thread.java:722)
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.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:403)
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:325)
    at org.jboss.weld.bootstrap.Validator.validateInterceptor(Validator.java:554)
    at org.jboss.weld.bootstrap.Validator.validateInterceptors(Validator.java:530)
    at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:479)
    at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:536)
    at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:216)
    ... 36 more

【问题讨论】:

    标签: glassfish-4 java-ee-7


    【解决方案1】:

    我的问题和你一模一样。

    我通过从我的项目中删除 Apache MyFaces CODI 解决了这个问题,因为它似乎与 JEE7 不兼容

    如果您在项目中使用 Apache MyFaces CODI,这可能是导致问题的原因

    您可以找到更多信息Here

    问候

    【讨论】:

    • 我认为您可能已经解决了我的问题,因为我还在为@ViewAccessScoped 使用 CODI,这将为我节省大量时间来逐个消除库。如果可以,我会在将其标记为已接受之前对其进行测试。顺便说一句,如果你使用的是 Guava,请不要升级到最新的 V14 版本,它也与 JEE7 不兼容,V13 是可以的。
    • @Juan 抱歉,这个答案不是很有用。只是不要从 CODI 添加 Bean-Validation 模块。它的大部分功能在 EE7 中都是可用的。
    • 其他人这样做没有问题。参见例如jsfcorner.blogspot.co.at/2013/08/from-codi-to-deltaspike.html最后部分的评论
    猜你喜欢
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多