【发布时间】:2020-05-04 05:16:01
【问题描述】:
@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>```
【问题讨论】:
-
你的依赖管理完全错误。首先为 java-ee 项目创建一个好的 pom。提示“提供”是这里的关键(词)
-
你能告诉我哪里做错了吗?
-
@ResulZOROĞLU 你能尝试将服务的实现注释为
@Singleton吗? -
其中导入javax.ejb.Singleton,导入javax.inject.Singleton; @akortex91
-
我向您指出多个详细的答案。选择最适合您的一款。我没有直接回答的原因是我不确定这种错误配置是否是导致您的问题的原因(可能是,也可能不是),但至少 pom 是错误的。祝你好运(我的意思是积极的)但是从现在开始我会忽略你并且不会指出你的配置错误。如果您从教程中获得了这个 pom,请放弃使用它,这很糟糕......哦,堆栈跟踪包含更多关于错误的信息。 (可能有几种类型的不满足的依赖关系)。干杯!
标签: java dependency-injection glassfish cdi