我在@Inject
时出错。我不明白为什么。
我的应用服务器:GlassFish 4.1.2
当我@Inject
创建我的类时,服务器给出一个错误
java.io.IOException: com.sun.enterprise.admin.remote.RemoteFailureException: Error occurred during deployment: Exception while loading the app : CDI deployment failure:WELD-001408: Unsatisfied dependencies for type UserService with qualifiers @Default at injection point [BackedAnnotatedField] @Inject private jobs.SignUpCDIB.userServiceat jobs.SignUpCDIB.userService(SignUpCDIB.java:0)
当我@Inject我创建的类时,服务器给出了一个错误
package jobs;
import services.UserService;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.Serializable;
@Named
@ConversationScoped
public class SignUpCDIB implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private UserService userService;
}
我想把它注入另一个类,比如:
package services;
import jobs.User;
public interface UserService {
void save(User user);
}
UserService实现java类
package services;
import jobs.User;
import java.io.Serializable;
public class UserServiceImpl implements UserService, Serializable {
@Override
public void save(User user) {
}
}
Maven pom xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>loginTutorials1</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.13</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.13</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>```
从DI容器产生的错误消息中可以明显看出您收到此错误的原因。
注入点处带有限定符@Default的UserService类型的未满足依赖关系
容器通知您,对于请求的实现,没有可以注入的bean(即UserService
)。
添加@Singleton
注释可以让DI容器看到这一点,同时自动符合注入条件。
所讨论的注释的工作方式与另一个类上的@ConversationScoped
基本相同,尽管bean的可用范围有一些不同。
我建议你好好阅读一下bean和DI通常是如何处理的。
我在JBoss上部署我的Java应用程序时遇到了一个愚蠢的问题。在我使用接口类更改源代码之前,一切都很好。所以这是我的问题: ... 在JBoss 7.1上部署时会出现以下错误: 10:05:34838错误[org.jboss.msc.service.fail](msc服务线程1-6)MSC00001:无法启动服务jboss。部署。单元“mdk-exchange-1.1.0.战争”。WeldSer
我在使用Arquillian测试JavaEE8应用程序时遇到了这个问题: WELD-001408:类型记录器与限定符@默认在注入点[BackedAnNotatedField]@注入私有academy.learnprogramming.services.TodoService的未满足依赖项。LOG 我对EntityManager也有同样的错误 以下是我的课程: TodoService。类(我必须测试
我想在maven项目中使用CDI JSF HIBERNATE PRIMEFACES的一个实现。我的pom。xml是这样的: 我的项目的结构是这样的,当我在不同的类中实现时,我使用一个通用接口。我在3个类IGenericDAO中实现的一个接口,我在UserDao PersonDao RoleDao中实现它,如下所示 实现是 像这样,我将服务编码为,我使用通用接口,并在3个类中实现代码,如下所示: 实
在JBoss上部署我的Java应用程序时,我遇到了一个愚蠢的问题。在我使用接口类更改源代码之前,一切都很好。所以我的问题是: 10:05:34,838错误[org.jboss.MSC.service.fail](MSC服务线程1-6)MSC00001:无法启动服务jboss.deployment.unit。“MDK-Exchange-1.1.0.war”。WeldService:org.jboss
在部署到jboss arquilian服务器时,我遇到了以下问题(在部署本地jboss服务器时似乎没有这个问题 org.jboss.weld.exceptions.DeploymentException:WELD-001408类型[CarPolicyServiceWithContext]的依赖项不满足,其限定符为[@default],位于注入点[[field]@Inject com.athlon.
我确实遇到了与这里所解释的相同的问题:JBOSS7.1.3:@EJB工作而@Inject失败,这可能是相同的设置(Wildfly 8.0)。 尽管有一个带有producer的资源类,但我不能注入一个Logger实例。Neiter在控制器中,也不在EJB中。“问题1”如果我错了,请纠正我,我应该可以将它们注入@model bean和注有@stateless(EJB)的bean中,不是吗? 下面是我的