Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java weblogic 12.2.1.1.0中的“WELD-001409类型不明确依赖项”_Java_Weblogic_Cdi - Fatal编程技术网

Java weblogic 12.2.1.1.0中的“WELD-001409类型不明确依赖项”

Java weblogic 12.2.1.1.0中的“WELD-001409类型不明确依赖项”,java,weblogic,cdi,Java,Weblogic,Cdi,我在weblogic 12.2.1.1.0中遇到con weld和CDI问题,我有一个名称和代码为的类: package bo.otracosa; import java.lang.annotation.Retention; import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.util.HashSet; import java.util.Set; import javax.enterprise.

我在weblogic 12.2.1.1.0中遇到con weld和CDI问题,我有一个名称和代码为的类:

    package bo.otracosa;

import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.util.HashSet;
import java.util.Set;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Default;
import javax.enterprise.inject.Produces;
import javax.inject.Qualifier;
import javax.enterprise.inject.Produces;

/**
 *
 * @author jdlee
 */
@ApplicationScoped
public class Database {

    public Database() {
    }

    private Set<String> authCodes = new HashSet();
    private Set<String> tokens = new HashSet();

    public void addAuthCode(String authCode) {
        authCodes.add(authCode);
    }

    public boolean isValidAuthCode(String authCode) {
        return authCodes.contains(authCode);
    }

    public void addToken(String token) {
        tokens.add(token);
    }

    public boolean isValidToken(String token) {
        return tokens.contains(token);
    }
}
我在其他帖子中发现了这个错误,但是解决方案,如何在lib或classpath中找到类副本,在我的例子中是不正确的。 其他解决方案说用户glashfish,但我使用weblogic

该计划是:

/**
 *
 * @author dddd
 */
import bo.otracosa.Database;
import bo.otracosa.Otraclase;
import java.net.URI;
import java.net.URISyntaxException;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.oltu.oauth2.as.issuer.MD5Generator;
import org.apache.oltu.oauth2.as.issuer.OAuthIssuerImpl;
import org.apache.oltu.oauth2.as.request.OAuthAuthzRequest;
import org.apache.oltu.oauth2.as.response.OAuthASResponse;
import org.apache.oltu.oauth2.common.OAuth;
import org.apache.oltu.oauth2.common.exception.OAuthProblemException;
import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
import org.apache.oltu.oauth2.common.message.OAuthResponse;
import org.apache.oltu.oauth2.common.message.types.ResponseType;
import org.apache.oltu.oauth2.common.utils.OAuthUtils;

/**
 *
 * @author jdlee
 */
@Path("/authz")
public class AuthzEndPoint {


    @Inject
    public Database db;

    @GET
    public String getMethod() {

        db.isValidToken("hola");
        return "ok";

    }
}

你不知道吗

错误告诉我们,CDI在类路径上两次找到bo.otracosa.Database类。因此,包含此类的库jar被多次部署。很难说,但常见的原因是:

您可能已经在部署中添加了两次jar,这可能是maven依赖版本的问题 如果使用maven构建,则包含bo.otracosa.Database的库可能已经与其他应用程序或模块一起部署:将依赖项的范围更改为要提供的服务器上已有的libs
我更新了weblogic 12.2.1.2并正常工作,但出现以下错误:

 :org.jboss.weld.exceptions.DeploymentException:WELD-001409: Ambiguous dependencies for type Database with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject public bo.sigep.modulo.api.submodulo.AuthzEndPoint.db
  at bo.sigep.modulo.api.submodulo.AuthzEndPoint.db(AuthzEndPoint.java:0)
  Possible dependencies: 
  - Managed Bean [class bo.otracosa.Database] with qualifiers [@Any @Default],
  - Managed Bean [class bo.otracosa.Database] with qualifiers [@Any @Default]
Caused By: org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=Database,parent=AuthzEndPoint,qualifiers={},position=-1,optional=false,self=false,unqualified=null,1091065126)
at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:75)
at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:941)
at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocatorImpl.java:980)
at org.glassfish.jersey.ext.cdi1x.internal.AbstractCdiBeanHk2Factory$2.getInstance(AbstractCdiBeanHk2Factory.java:142)
at org.glassfish.jersey.ext.cdi1x.internal.AbstractCdiBeanHk2Factory._provide(AbstractCdiBeanHk2Factory.java:91)
Truncated. see log file for complete stacktrace
但我在cdi配置中修改了此属性:

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       bean-discovery-mode="all">
</beans>

最后工作

不,我看到类路径,libs,类不属于库在war项目中,我打开了与winrar的war,什么都没有,只在weblogic rest服务的类common中得到错误,没有得到错误。对我不起作用:同一个ear部署在glashfish中,但不在weblogic中