当前位置: 首页 > 知识库问答 >
问题:

Arquillian over Wildfly部署异常:WELD-001408:未满足的依赖项

公良信然
2023-03-14

我有一个非常简单的测试:

@RunWith(Arquillian.class)
public class SimpleTest
{
    
    @Inject private SingleEntity singleEntity;
    
    @Deployment
    public static WebArchive createDeployment()
    {   
        return ShrinkWrap.create(WebArchive.class)
            .addClass(SingleEntity.class)
            .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"));
    }
    
    @Test
    public void categorize()
    {
        assertNotNull(this.singleEntity);
    }
}

我只想注入类型为SingleEntity的对象<代码>单一实体是一个单一的POJO:

public class SingleEntity
{
    private String id;
    private String description;
    
    public SingleEntity(String id, String description) {
        super();
        this.id = id;
        this.description = description;
    }

    //getters & setters
}

之后,我执行gradle测试。为了让Arquillian在Wildfly嵌入式实例中执行这些测试,我已经配置了测试:

<arquillian xmlns="http://jboss.org/schema/arquillian"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">  
  
    <container qualifier="jboss" default="true">  
        <configuration>  
        <!-- Supported property names: [managementPort, username, managementAddress, bundlePath, managementProtocol,   
                    cleanServerBaseDir, jbossHome, password, modulePath] -->  
            <property name="jbossHome">C:\servers\wildfly-Test-8.2.0.Final</property>
            <property name="modulePath">C:\servers\wildfly-Test-8.2.0.Final\modules\</property>
            <!-- <property name="managementPort">8888</property> -->  
        </configuration>  
    </container>  
</arquillian>  

这很简单,但是,我收到一个异常,告诉我SingleEntity无法解决:

原因:org。jboss。焊接例外。DeploymentException:WELD-001408:SingleEntity类型与限定符@Default的不满意依赖关系

注入私有com.jeusdi.arquillian.SimpleTest.single实体

在com上。杰乌迪。阿奎利安。简单测试。singleEntity(SimpleTest.java:0)

有什么想法吗?谢谢大家

共有1个答案

司马萧迟
2023-03-14

通常,您不希望注入实体。JPA基于类名,CDI使用代理而不是具体的类。这会导致注入不同的类。

这是唯一的最佳实践。如果你继续前进,你可能还会遇到其他错误,但如果一切正常,你不应该出现这个错误。

您的实体没有定义bean的注释。如果您使用的是CDI 1.2(wildfly 8.2提供),以及您的bean。xml没有明确列出bean发现模式=all,那么这个实体就不会被提取。

 类似资料: