未能 运行 @QuarkusTest。不支持 api 524288。更新 quarkus 插件版本后
Failed to run @QuarkusTest. Unsupported api 524288. After update quarkus plugin version
当我 运行 我在 intellij 上测试时,它正在返回
[error]: Build step io.quarkus.jsonb.deployment.JsonbProcessor#generateCustomizer threw an exception:
java.lang.IllegalArgumentException: Unsupported api 524288
at org.objectweb.asm.ClassVisitor.
[error]: Build step io.quarkus.vertx.http.deployment.HttpSecurityProcessor#setupAuthenticationMechanisms threw an exception:
java.lang.IllegalArgumentException: Unsupported api 524288
[error]: Build step io.quarkus.smallrye.openapi.deployment.SmallRyeOpenApiProcessor#handler threw an exception:
java.lang.IllegalArgumentException: Unsupported api 524288
at org.objectweb.asm.ClassVisitor.<init>(ClassVisitor.java:70)
at org.objectweb.asm.ClassVisitor.<init>(ClassVisitor.java:70)
[error]: Build step io.quarkus.deployment.steps.BootstrapConfigSetupBuildStep#setupBootstrapConfig threw an exception: java.lang.IllegalArgumentException: Unsupported api 524288
at org.objectweb.asm.ClassVisitor.<init>(ClassVisitor.java:70)
我的问题是在将 quarkus 插件版本从 1.4.2.Final 更新到 1.6.0.Final 后出现的。我不知道如何解决这个问题。当回到 1.4.2 时一切正常。在我的例子中,需要更新来实现 quarkus-smallrye-graphql。当我使用 1.4.2 版本将 graphql 依赖项添加到我的 pom 时,它说缺少 quarkus-smallrye-graphql 依赖项。我执行了 mvn clean install -U 来更新。但还是说不见了。
但后来我发现当我将 quarkus-plugin-version 更新到 1.6 时,quarkus-graphql 依赖成功加载。0.Final,但这破坏了我所有的测试用例。
这是我的测试
package org.me.service;
import io.quarkus.hibernate.orm.panache.PanacheQuery;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.me.model.Nutrition;
import javax.inject.Inject;
import javax.transaction.Transactional;
import javax.ws.rs.core.Response;
import static org.junit.jupiter.api.Assertions.assertEquals;
@QuarkusTest
class NutritionServiceTest {
@Inject
NutritionService nutritionService;
@AfterEach
@Transactional
public void tearDown() {
Nutrition.deleteAll();
}
@Test
void addNutritionCatalog_shouldSave_whenSuccessSendToDatabase() {
Nutrition nutrition = Nutrition.builder()
.name("nameee")
.description("descriptionn")
.build();
final Response response = nutritionService.addNutritionCatalog(nutrition);
final PanacheQuery<Nutrition> all = Nutrition.findAll();
assertEquals(1, all.count());
assertEquals(nutrition, response.getEntity());
}
}
我想那是因为我的依赖。所以,这是我的 pom 文件
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.me</groupId>
<artifactId>catalog</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<compiler-plugin.version>3.8.1</compiler-plugin.version>
<maven.compiler.parameters>true</maven.compiler.parameters>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus-plugin.version>1.6.0.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.6.0.Final</quarkus.platform.version>
<surefire-plugin.version>2.22.1</surefire-plugin.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>${quarkus.platform.artifact-id}</artifactId>
<version>${quarkus.platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jsonb</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-graphql</artifactId>
</dependency>
<!-- TEST -->
<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>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5-mockito</artifactId>
<version>1.4.1.Final</version>
<scope>test</scope>
</dependency>
<!-- DATABASE -->
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-orm-panache</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-liquibase</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-postgresql</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<configuration>
<systemProperties>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>native</id>
<activation>
<property>
<name>native</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<systemProperties>
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
</systemProperties>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<properties>
<quarkus.package.type>native</quarkus.package.type>
</properties>
</profile>
</profiles>
</project>
首先,我将从 quarkus-junit5-mockito 工件中删除版本。
那么你应该检查你的依赖树中没有旧的 ASM 版本。
我们在使用 Quarkus 1.6.1-Final 版时遇到了同样的问题。
pom 文件中没有为 Quarkus 依赖项指定额外的版本属性。
删除 .idea
目录并将整个项目重新导入 IntelliJ IDEA 解决了我们的问题。
当我 运行 我在 intellij 上测试时,它正在返回
[error]: Build step io.quarkus.jsonb.deployment.JsonbProcessor#generateCustomizer threw an exception:
java.lang.IllegalArgumentException: Unsupported api 524288
at org.objectweb.asm.ClassVisitor.
[error]: Build step io.quarkus.vertx.http.deployment.HttpSecurityProcessor#setupAuthenticationMechanisms threw an exception:
java.lang.IllegalArgumentException: Unsupported api 524288
[error]: Build step io.quarkus.smallrye.openapi.deployment.SmallRyeOpenApiProcessor#handler threw an exception:
java.lang.IllegalArgumentException: Unsupported api 524288
at org.objectweb.asm.ClassVisitor.<init>(ClassVisitor.java:70)
at org.objectweb.asm.ClassVisitor.<init>(ClassVisitor.java:70)
[error]: Build step io.quarkus.deployment.steps.BootstrapConfigSetupBuildStep#setupBootstrapConfig threw an exception: java.lang.IllegalArgumentException: Unsupported api 524288
at org.objectweb.asm.ClassVisitor.<init>(ClassVisitor.java:70)
我的问题是在将 quarkus 插件版本从 1.4.2.Final 更新到 1.6.0.Final 后出现的。我不知道如何解决这个问题。当回到 1.4.2 时一切正常。在我的例子中,需要更新来实现 quarkus-smallrye-graphql。当我使用 1.4.2 版本将 graphql 依赖项添加到我的 pom 时,它说缺少 quarkus-smallrye-graphql 依赖项。我执行了 mvn clean install -U 来更新。但还是说不见了。
但后来我发现当我将 quarkus-plugin-version 更新到 1.6 时,quarkus-graphql 依赖成功加载。0.Final,但这破坏了我所有的测试用例。
这是我的测试
package org.me.service;
import io.quarkus.hibernate.orm.panache.PanacheQuery;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.me.model.Nutrition;
import javax.inject.Inject;
import javax.transaction.Transactional;
import javax.ws.rs.core.Response;
import static org.junit.jupiter.api.Assertions.assertEquals;
@QuarkusTest
class NutritionServiceTest {
@Inject
NutritionService nutritionService;
@AfterEach
@Transactional
public void tearDown() {
Nutrition.deleteAll();
}
@Test
void addNutritionCatalog_shouldSave_whenSuccessSendToDatabase() {
Nutrition nutrition = Nutrition.builder()
.name("nameee")
.description("descriptionn")
.build();
final Response response = nutritionService.addNutritionCatalog(nutrition);
final PanacheQuery<Nutrition> all = Nutrition.findAll();
assertEquals(1, all.count());
assertEquals(nutrition, response.getEntity());
}
}
我想那是因为我的依赖。所以,这是我的 pom 文件
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.me</groupId>
<artifactId>catalog</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<compiler-plugin.version>3.8.1</compiler-plugin.version>
<maven.compiler.parameters>true</maven.compiler.parameters>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus-plugin.version>1.6.0.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.6.0.Final</quarkus.platform.version>
<surefire-plugin.version>2.22.1</surefire-plugin.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>${quarkus.platform.artifact-id}</artifactId>
<version>${quarkus.platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jsonb</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-graphql</artifactId>
</dependency>
<!-- TEST -->
<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>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5-mockito</artifactId>
<version>1.4.1.Final</version>
<scope>test</scope>
</dependency>
<!-- DATABASE -->
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-orm-panache</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-liquibase</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-postgresql</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<configuration>
<systemProperties>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>native</id>
<activation>
<property>
<name>native</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<systemProperties>
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
</systemProperties>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<properties>
<quarkus.package.type>native</quarkus.package.type>
</properties>
</profile>
</profiles>
</project>
首先,我将从 quarkus-junit5-mockito 工件中删除版本。
那么你应该检查你的依赖树中没有旧的 ASM 版本。
我们在使用 Quarkus 1.6.1-Final 版时遇到了同样的问题。
pom 文件中没有为 Quarkus 依赖项指定额外的版本属性。
删除 .idea
目录并将整个项目重新导入 IntelliJ IDEA 解决了我们的问题。