带有限定符的类型 Set 的依赖关系不满足

2024-04-15

我是创建 Web 服务(Restful api)的新手。遵循 Java Brains for Restful Web 服务的简单教程。 我收到错误,内容类似于“带有限定符@Default 的类型集的依赖关系不满足”

我在这里搜索了不同的问题,尝试了以下操作:

  1. 下载新服务器并将其连接到我的项目并删除旧服务器。
  2. 更新了 guava 依赖项并将其 jar 添加到我的项目中。

仍然面临错误。

下面是服务器错误日志。

严重:加载应用程序时出现异常:CDI 部署 失败:WELD-001408:类型集的依赖关系不满足 在注入点带有限定符 @Default [BackedAnnotatedParameter] [BackedAnnotatedConstructor] 的参数 1 @Inject com.google.common.util.concurrent.ServiceManager(设置) 在 com.google.common.util.concurrent.ServiceManager.(ServiceManager.java:0) org.jboss.weld.exceptions.DeploymentException:WELD-001408: 带有限定符的类型 Set 的依赖关系不满足 @Default 注入点 [BackedAnnotatedParameter] 参数 1 [BackedAnnotatedConstructor] @Inject 的 com.google.common.util.concurrent.ServiceManager(设置)位于 com.google.common.util.concurrent.ServiceManager.(ServiceManager.java:0)

这是提供数据的学生服务类。

public class StudentService {
    public List<Student> getAllData() {
        Student s1 = new Student(1, "Sagar", 20);
        Student s2 = new Student(2, "Puneet", 23);
        List<Student> list = new ArrayList<>();
        list.add(s1);
        list.add(s2);
        return list;
    }
}

下面是我的 api 类

@Path("/myfirstapi")
public class MyFirstAPI {
StudentService ss=new StudentService();
@GET
@Produces(MediaType.APPLICATION_XML)
public List<Student> gettext() {
    return ss.getAllData();
    }
}

导致此错误的原因通常是 Guava 版本错误。您的 Guava 版本可能

我可以看到两种解决方案:

  • 如果您正在使用 CDI(您似乎没有),请更新 Guava 版本,版本 >= 16。
  • 否则禁用 CDI(如果类路径中存在 beans.xml,则删除并禁用应用程序服务器中的隐式扫描)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有限定符的类型 Set 的依赖关系不满足 的相关文章

随机推荐