我是新手,致力于创建Web服务(Restful api)。遵循Java Brains for Restful Web服务的简单教程。 我正在收到错误,其中包含"不满意的依赖关系类型Set with qualifiers @ Default"
我在这里搜索了不同的问题,尝试了下面的事情:
仍然面临错误。
下面是服务器错误日志。
严重:加载应用时出现异常:CDI部署 失败:WELD-001408:类型Set的不满意依赖关系 在注入点使用@Default限定符 [BackedAnnotatedParameter] [BackedAnnotatedConstructor]的参数1 @Inject com.google.common.util.concurrent.ServiceManager(Set) 在 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(设置)at 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();
}
}
答案 0 :(得分:5)
此错误的原因通常是Guava的错误版本。你可能有一个版本的Guava&lt;你应该检查你的课程路径。
我可以看到2个解决方案:
答案 1 :(得分:0)
您的 Web服务器可能已包含guava 库,并且没有任何问题。所以你需要的是阻止你的guava库进入war文件。有人说(Using Jersey 2.1 with CDI),那个
简单地将maava依赖设置为maven中提供的(或测试)解决了问题。
我使用gradle,因此我将依赖项放入compileOnly
set:
compileOnly 'org.glassfish.jersey.core:jersey-client:2.0.1'
首先我跑gradle dependencies
找出什么是拉番石榴。最后我检查了我的战争,以确认番石榴不再存在。