我试图将一个小型公司(多模块)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进程发现的正确注解,这是对的吗?
谢谢你的帮助。
1条答案
按热度按时间8wtpewkr1#
我认为那些第三方公司类没有quarkus cdi进程发现的正确注解,这是对的吗?
是的,这应该是问题所在,如果
CryptographyService
即使它被jandex索引,它也不会被注射。解决这个问题的方法是创建一个生产者来生产
CryptographyService
豆子工厂里的豆子。像这样:
为了便于参考,这里有一些关于cdi bean producer的文档:https://quarkus.io/guides/cdi#q-好吧,你说有几种豆子