问题描述
使用 Quarkus 我在执行时收到以下错误:
Caused by: java.lang.IllegalArgumentException: Multiple matching 名称“security.jaxrs.deny-unannotated-endpoints”的属性 属性与公共布尔值匹配 io.quarkus.resteasy.reactive.common.runtime.JaxRSSecurityConfig.denyJaxRs 和公共布尔值 io.quarkus.resteasy.runtime.JaxRSSecurityConfig.denyJaxRs。这是 可能是因为您有不兼容的扩展组合 两者都定义了相同的属性(例如,包括反应性和 阻止数据库扩展)
我的 pom 属性是:
<compiler-plugin.version>3.8.1</compiler-plugin.version>
<maven.compiler.parameters>true</maven.compiler.parameters>
<maven.compiler.source>12</maven.compiler.source>
<maven.compiler.target>12</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus-plugin.version>1.13.3.Final</quarkus-plugin.version>
<quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
<quarkus.platform.version>1.13.3.Final</quarkus.platform.version>
和依赖项:
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-mutiny</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-vertx</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jsonb</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-mutiny</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-rest-client-reactive</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-jwt</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-jwt-build</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-postgresql</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
我只是想使用 Multi from mutiny 和 Server Sent Elements 进行流式传输:
@GET
@Produces(MediaType.SERVER_SENT_EVENTS)
@RestSseElementType(MediaType.TEXT_PLAIN)
@Path("/stream/{count}/{name}")
public Multi<String> greetingsAsstream(int count,String name) {
return service.greetings(count,name);
}
解决方法
您有经典的 RESTEasy (quarkus-resteasy-jsonb
,quarkus-resteasy-mutiny
) 和 RESTEasy Reactive (quarkus-resteasy-reactive
)。你需要选择一个并坚持下去。
例如,如果您想要 RESTEasy Reactive,您需要移除 quarkus-resteasy-mutiny
(不需要额外依赖 RESTEasy Reactive),并将 quarkus-resteasy-jsonb
替换为 quarkus-resteasy-reactive-jsonb
。
{
nextTick: [Function],title: 'browser',browser: true,env: {},argv: [],version: '',versions: {},on: [Function: noop],addListener: [Function: noop],once: [Function: noop],off: [Function: noop],removeListener: [Function: noop],removeAllListeners: [Function: noop],emit: [Function: noop],prependListener: [Function: noop],prependOnceListener: [Function: noop],listeners: [Function],binding: [Function],cwd: [Function],chdir: [Function],umask: [Function]
}
java.lang.RuntimeException: java.lang.IllegalArgumentException: 多种的 名称“security.jaxrs.deny-unannotated-endpoints”的匹配属性 属性与公共布尔值匹配 io.quarkus.resteasy.reactive.common.runtime.JaxRsSecurityConfig.denyJaxRs 和 公共布尔 io.quarkus.resteasy.runtime.JaxRsSecurityConfig.denyJaxRs。这 可能是因为您有不兼容的扩展组合 定义相同的属性(例如,包括反应式和阻塞式数据库 扩展)
I am facing a similar problem:
依赖项{
I am using Swagger OpenAPIGenerate:
generatorName.set("jaxrs-spec")
Gradle dependencies:
implementation(Libs.quarkus_resteasy){
exclude(group = "io-quarkus",module = "quarkus-resteasy-runtime")
}
implementationList(LibGroups.quarkus_rest_server)
}