2017-01-17 4 views
5

Я новичок в создании веб-сервисов (Restful api). после простого руководства Java Brains для Restful web-сервисов. Я получаю ошибку, которая говорит что-то вроде «неудовлетворенных зависимостей для типа Набора с отборочными @default»Неудовлетворительные зависимости для типа Set <Service> с квалификаторами

Я искал разные вопросы здесь, попытались ниже вещи:

  1. загруженных новый сервер и подключен к нему к моему проекту и удалил старый сервер.
  2. Обновлены зависимости guava и добавлены его jar в мой проект.

все еще стоит перед ошибкой.

Ниже приведен журнал ошибок сервера.

Тяжелое: Исключение при загрузке приложения: развертывания КДИ недостаточность: WELD-001408: Невыполненные зависимости для типа Set с классификаторами @default в точке впрыска [BackedAnnotatedParameter] Параметр 1 [BackedAnnotatedConstructor] @Inject ком .google.common.util.concurrent.ServiceManager (Set) at com.google.common.util.concurrent.ServiceManager. (ServiceManager.java:0) org.jboss.weld.exceptions.DeploymentException: WELD-001408: Неудовлетворенные зависимости для типа Set с квалификаторами @Default в точке впрыска [BackedAnnotatedParame тер] Параметр 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; 
    } 
} 

Ниже мой апи класс

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

Без дополнительной информации, например, кода, очень сложно дать какие-либо советы. – hotzst

+0

Добавлен код @hotzst, сообщите мне, если вам потребуется что-то еще. Я пытаюсь создать базовый пример api, где я использую метод get для получения данных из класса studentservice. –

ответ

4

Причиной этой ошибки, как правило, плохая версия гуавы. У вас может быть версия Guava < 16. Вы должны проверить свой путь к классам.

Я вижу 2 решения:

  • Если вы используете CDI (вы, кажется, не), обновить Guava версию с версии> = 16.
  • Else отключить CDI (удалить beans.xml если присутствовать в пути к классам и отключать неявное сканирование в вашем сервере приложений).
+1

Это помогло мне. обновил свой Guava версию до 16. ' \t \t \t com.google.guava \t \t \t гуавы \t \t \t 16,0 \t \t' – ashlrem

+1

@ashlrem: отлично! Пожалуйста, поддержите, если это решит вашу проблему :-) – Rouliboy

1

Возможно, ваш веб-сервер уже содержит библиотеку guava и не имеет проблем с ней. Так что вам нужно, чтобы ваша библиотека guava не попала в военный файл. Некоторые говорят (Using Jersey 2.1 with CDI), что

Просто установка зависимости guava к предоставленному (или тесту) в maven решает проблему.не

Я использую Gradle поэтому я ставлю зависимость в compileOnly набор:.

compileOnly 'org.glassfish.jersey.core:jersey-client:2.0.1' 

Сначала я побежал gradle dependencies, чтобы выяснить, что тянет гуавы в конце концов, я рассмотрел мою войну, чтобы подтвердить гуавы больше не там.

+0

Конечно, это работает только в том случае, если ваш локальный сервер развертывания также содержит зависимость. В противном случае он будет работать в среде, но не локально. – testuser

Смежные вопросы

 Смежные вопросы