未能构建quarkus应用程序:类型的依赖关系不满意

iyr7buue  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(405)

我试图将一个小型公司(多模块)resteasy jax-rs应用程序移植到quarkus,但遇到了下面的错误。我无法控制对公司模块的许多依赖,但我尝试遵循quarkus的上下文和依赖注入指南(https://quarkus.io/guides/cdi-reference).
操作系统: Ubuntu 18.04 (WSL) java 语: OpenJDK 11.0.8 命令: ./mvnw clean install -DskipTests ```
[ERROR] Failed to execute goal io.quarkus:quarkus-maven-plugin:1.9.2.Final:build (default) on project : Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[ERROR] [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: Found 4 deployment problems:
...
[ERROR] [3] Unsatisfied dependency for type .security.cryptography.CryptographyService and qualifiers [@Default]
[ERROR] - java member: .request.handlers.ConfigurationFileDownloadHandler#cryptographyService
[ERROR] - declared on CLASS bean [types=[.request.handlers.ConfigurationFileDownloadHandler, java.lang.Object], qualifiers=[@Default, @Any], target=.request.handlers.ConfigurationFileDownloadHandler]

代码本身中的di:

...
import .security.cryptography.CryptographyService;
...

@ApplicationScoped
public class ConfigurationFileDownloadHandler {

...

@Inject
private CryptographyService cryptographyService;

...

依赖关系在子模块pom文件中声明(从 `mvn dependency:tree` 下表):

[INFO] +- .security.cryptography:cryptography-service-api-jar:jar:1.5.1:compile

我还创建了一个 `application.properties` 文件位于 `<sub-module/src/main/resources` 包括以下内容:

quarkus.index-dependency.cryptography.group-id=.security.cryptography
quarkus.index-dependency.cryptography.artifact-id=cryptography-service-api-jar

还有一个空的 `beans.xml` 文件位于“`<sub-module/src/main/resources/meta-inf”下。
我认为那些第三方公司类没有quarkus cdi进程发现的正确注解,这是对的吗?
谢谢你的帮助。
8wtpewkr

8wtpewkr1#

我认为那些第三方公司类没有quarkus cdi进程发现的正确注解,这是对的吗?
是的,这应该是问题所在,如果 CryptographyService 即使它被jandex索引,它也不会被注射。
解决这个问题的方法是创建一个生产者来生产 CryptographyService 豆子工厂里的豆子。
像这样:

@Singleton
public class CryptographyServiceProducer {
    @Produces
    @ApplicationScoped
    public CryptographyService cryptographyService() {
        return new CryptographyService();
    }
}

为了便于参考,这里有一些关于cdi bean producer的文档:https://quarkus.io/guides/cdi#q-好吧,你说有几种豆子

相关问题