Java MapStruct-第二个映射器的焊缝注入不工作

Java MapStruct-第二个映射器的焊缝注入不工作,java,jakarta-ee,cdi,inject,mapstruct,Java,Jakarta Ee,Cdi,Inject,Mapstruct,我在使用mapstruct库的映射程序的weld cdi中遇到注入问题。 当我只有一个映射器时,一切都在工作。 添加第二个映射程序后,此映射程序引发异常: 原因:org.jboss.weld.exceptions.DeploymentException:weld-001408:类型检查TypeMapper与限定符@Default的依赖关系不满足 第一个制图员(这个制图员工作) @Mapper(componentModel=“cdi”,unappedTargetPolicy=ReportingPo

我在使用mapstruct库的映射程序的weld cdi中遇到注入问题。 当我只有一个映射器时,一切都在工作。 添加第二个映射程序后,此映射程序引发异常: 原因:org.jboss.weld.exceptions.DeploymentException:weld-001408:类型检查TypeMapper与限定符@Default的依赖关系不满足

第一个制图员(这个制图员工作)

@Mapper(componentModel=“cdi”,unappedTargetPolicy=ReportingPolicy.IGNORE)
公共接口安装映射程序{
安装安装到安装(安装到安装到安装);
安装到安装到安装到安装(安装);
列表安装至安装SDTOS(列表安装);
}
第二个映射器(这不起作用并引发异常):

@Mapper(componentModel=“cdi”,unappedTargetPolicy=ReportingPolicy.IGNORE)
公共接口检查类型映射器{
检查类型检查类型到检查类型(检查类型到检查类型到);
检查类型到检查类型到检查类型到(检查类型检查类型);
列表检查类型到检查类型DTO(列表检查类型);
}
我的installationServiceImpl:

@RequestScoped
public class InstallationServiceImpl implements InstallationService {
@Inject
private InstallationRepository installationRepository;
@Inject
private InstallationMapper installationMapper;

@Override
public List<InstallationDto> getAllInstallations() {
    List<Installation> installations = installationRepository.getAll();
    List<InstallationDto> installationDtos = installationMapper.installationsToInstallationsDtos(installations);
    return installationDtos;
    }
}
@RequestScoped
public class InspectionTypeServiceImpl implements InspectionTypeService{
@Inject
InspectionTypeRepository inspectionTypeRepository;

@Inject
InspectionTypeMapper inspectionTypeMapper;
@Override
public List<InspectionTypeDto> getAllInspectionTypes() {
    List<InspectionType> inspectionTypes = inspectionTypeRepository.getAll();
    System.out.println(inspectionTypes);
    List<InspectionTypeDto> inspectionTypeDtos = inspectionTypeMapper
            .inspectionTypesToInspectionTypeDtos(inspectionTypes);
    return inspectionTypeDtos;
}
@RequestScoped
公共类InstallationServiceImpl实现InstallationService{
@注入
私有安装存储库安装存储库;
@注入
私人安装映射器安装映射器;
@凌驾
公共列表getAllInstallations(){
List installations=installationRepository.getAll();
List installationDtos=installationMapper.installationsToInstallationsDtos(安装);
返回安装DTO;
}
}
我的InspectionTypeServiceImpl:

@RequestScoped
public class InstallationServiceImpl implements InstallationService {
@Inject
private InstallationRepository installationRepository;
@Inject
private InstallationMapper installationMapper;

@Override
public List<InstallationDto> getAllInstallations() {
    List<Installation> installations = installationRepository.getAll();
    List<InstallationDto> installationDtos = installationMapper.installationsToInstallationsDtos(installations);
    return installationDtos;
    }
}
@RequestScoped
public class InspectionTypeServiceImpl implements InspectionTypeService{
@Inject
InspectionTypeRepository inspectionTypeRepository;

@Inject
InspectionTypeMapper inspectionTypeMapper;
@Override
public List<InspectionTypeDto> getAllInspectionTypes() {
    List<InspectionType> inspectionTypes = inspectionTypeRepository.getAll();
    System.out.println(inspectionTypes);
    List<InspectionTypeDto> inspectionTypeDtos = inspectionTypeMapper
            .inspectionTypesToInspectionTypeDtos(inspectionTypes);
    return inspectionTypeDtos;
}
@RequestScoped
公共类InspectionTypeServiceImpl实现InspectionTypeService{
@注入
InspectionTypeRepository InspectionTypeRepository;
@注入
检查类型映射器检查类型映射器;
@凌驾
公共列表getAllInspectionTypes(){
List inspectionTypes=inspectionTypeRepository.getAll();
系统输出打印LN(检查类型);
列表检查类型DTOS=inspectionTypeMapper
.检查类型至检查类型DTO(检查类型);
退货检验类型DTOS;
}

您确定在为
InspectionTypeMapper
构建过程中实际生成了实现吗?检查可部署(ear/war/jar)如果确实有一个
检查类型MapPerImpl
。是的,在/generated文件夹中,但它有应用程序映射,我在我的测量bean中注入了第一个和第二个映射器,它是ViewScope,这可能是一个原因吗?我不是CDI方面的专家。但是你可以在没有映射器的情况下尝试。它只是代码,尽管是生成的。不要认为它是MapStruct问题..顺便问一下,您是否尝试过构造函数注入?您在什么环境下运行?是您自己启动Weld(CDI)还是某个EE服务器为您执行此操作?如果两个impl都生成并位于同一文件夹中,一个是“Weld发现的”,另一个不是,那么您将如何发现这些bean(本例中的文件)存在一个问题?这可能归结为您如何启动Weld或MapStruct如何向CDI注册其bean-他们可能正在使用扩展,但我对此表示怀疑,因为他们只是将完整的类生成为bean。我在WebSphere上运行此操作。我不是启动Weld,而是服务器执行此操作。我通过简单的服务器重新启动解决了此问题。您确定我需要一个实现吗在为
InspectionTypeMapper
构建过程中实际生成的?检查可部署(ear/war/jar)如果确实有一个
检查类型MapPerImpl
。是的,在/generated文件夹中,但它有应用程序映射,我在我的测量bean中注入了第一个和第二个映射器,它是ViewScope,这可能是一个原因吗?我不是CDI方面的专家。但是你可以在没有映射器的情况下尝试。它只是代码,尽管是生成的。不要认为它是MapStruct问题..顺便问一下,您是否尝试过构造函数注入?您在什么环境下运行?是您自己启动Weld(CDI)还是某个EE服务器为您执行此操作?如果两个impl都生成并位于同一文件夹中,一个是“Weld发现的”,另一个不是,那么您将如何发现这些bean(本例中的文件)存在一个问题?这可能归结为您如何启动Weld或MapStruct如何向CDI注册其bean-他们可能正在使用扩展,但我对此表示怀疑,因为他们只是将完整的类生成为bean。我在WebSphere上运行此操作。我不是启动Weld,而是服务器执行此操作。我通过简单的服务器重启解决了此问题。