带有限定符 @Default 的类型的不满意依赖项

问题描述

我在运行 Java 应用程序时收到 WELD-001440 错误。我在 Servlet 类上有一个简单的用户界面。它的主要功能添加新用户。我正在尝试在另一个类中实现使用 api 进行电子邮件验证。

EmailValidationApiOdjemalec 是我尝试从中发出 API 请求的类。 JPAServlet 是我从中调用 EmailValidationApiOdjemalec 类的类。

这是 EmailValidationApiOdjemalec 类

package si.fri.prpo.sledilnik.storitve.odjemalci;

import si.fri.prpo.sledilnik.entitete.Uporabnik;
import si.fri.prpo.sledilnik.storitve.zrna.UpravljanjePrehodovZrno;

import javax.annotation.postconstruct;
import javax.inject.Inject;
import javax.print.attribute.standard.Media;
import javax.ws.rs.ProcessingException;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import java.net.http.HttpRequest;
import java.util.logging.Logger;

public class EmailValidationApiOdjemalec {

    private Client httpClient;
    private String baseURl = "https://rapidprod-something something";
    private String key = "my personal key";
    private String host = "host";
    private Logger log = Logger.getLogger(EmailValidationApiOdjemalec.class.getName());


    @postconstruct
    private void init() {
        log.info("Inicializacija zrna " + EmailValidationApiOdjemalec.class.getSimpleName());

        httpClient = ClientBuilder.newClient();
    }

    public boolean imaUstrezenEmail(Uporabnik uporabnik) {

        String email = uporabnik.getEmail();

        try {

            httpClient
                    .target(baseURl)
                    .queryParam("text",email)
                    .request(MediaType.APPLICATION_JSON)
                    .header("x-rapid-host","whoisapi-email-verification-v1.p.rapidapi.com")
                    .header("x-rapid-key","my rapid key ")
                    .get();

        } catch (WebApplicationException | ProcessingException e) {
            System.out.println("Exception");
        }


        log.info(httpClient.toString());

        return true;
    }
}

在这一个 JPAServlet 类,我尝试从中注入,然后从 EmailValidationApiOdjemalec 类调用方法

package si.fri.prpo.sledilnik.servleti;

import si.fri.prpo.sledilnik.entitete.Uporabnik;
import si.fri.prpo.sledilnik.storitve.dto.PrehodDto;
import si.fri.prpo.sledilnik.storitve.dto.ProstorDto;
import si.fri.prpo.sledilnik.storitve.odjemalci.EmailValidationApiOdjemalec;
import si.fri.prpo.sledilnik.storitve.zrna.*;
import si.fri.prpo.sledilnik.entitete.Prostor;
import si.fri.prpo.sledilnik.api.v1.viri.UporabnikiVir;
import si.fri.prpo.sledilnik.entitete.Vhod;

import si.fri.prpo.sledilnik.entitete.Prehod;


import javax.enterprise.context.Dependent;
import javax.enterprise.inject.Model;
import javax.inject.Inject;
import javax.servlet.servletexception;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.logging.Logger;

@WebServlet("/servlet")
public class JPAServlet extends HttpServlet {


    @Inject
    private UporabnikiZrno uporabnikiZrno;

    @Inject
    private EmailValidationApiOdjemalec emailValidationApiOdjemalec;

    @Override
    protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws servletexception,IOException {

        Logger log = Logger.getLogger(UporabnikiVir.class.getName());

        Uporabnik zan = new Uporabnik();
        zan.setIme("Zan");
        zan.setPriimek("Debevec");
        zan.setProstor(dnevnaSoba);
        zan.setEmail("zan@gmail.com");
        if (!emailValidationApiOdjemalec.imaUstrezenEmail(zan)) {
            log.info("Uporabnik nima pravega emaila");
        }
        uporabnikiZrno.dodajUporabnika(zan);
}
}

还有一条错误信息:

2020-12-23 19:58:31.673 WARN -- org.jboss.weld.bootstrap.Validator -- WELD-001440: Scope type @javax.enterprise.context.Dependent() used on injection point [BackedAnnotatedField] @Inject @Dependent private si.fri.prpo.sledilnik.servleti.JPAServlet.emailValidationApiOdjemalec
    at si.fri.prpo.sledilnik.servleti.JPAServlet.emailValidationApiOdjemalec(JPAServlet.java:0)
  StackTrace
2020-12-23 19:58:31.674 WARNING -- org.eclipse.jetty.annotations.ServletContainerInitializeRSStarter -- 
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type EmailValidationApiOdjemalec with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject @Dependent private si.fri.prpo.sledilnik.servleti.JPAServlet.emailValidationApiOdjemalec
  at si.fri.prpo.sledilnik.servleti.JPAServlet.emailValidationApiOdjemalec(JPAServlet.java:0)

    at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:378)
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:290)
    at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:143)
    at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:164)
    at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:526)
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:64)
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:62)
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:62)
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:55)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
    at java.base/java.lang.Thread.run(Thread.java:832)

谁能发现哪里出了问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...