You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus 2.7升级至3.3.3后出现大量类加载器索引警告求助

Quarkus 3.3.3升级后JMS类索引警告解决思路

问题背景

从Quarkus 2.7升级到3.3.3后,应用启动出现大量jakarta.jms、artemis及io.mashona.logwriting相关类的索引警告,源码无直接引用,依赖也未显式引入这些组件。

解决步骤

1. 排查并排除隐式依赖

先确认是否有Quarkus核心扩展间接引入了JMS相关依赖:

  • 执行Maven命令检查:
    mvn dependency:tree -Dincludes=jakarta.jms,org.apache.activemq,io.mashona
    
  • 若发现间接依赖,在对应Quarkus扩展(如quarkus-resteasy-reactive)中排除:
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-resteasy-reactive</artifactId>
        <exclusions>
            <exclusion>
                <groupId>jakarta.jms</groupId>
                <artifactId>jakarta.jms-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.apache.activemq</groupId>
                <artifactId>artemis-core-client</artifactId>
            </exclusion>
            <exclusion>
                <groupId>io.mashona</groupId>
                <artifactId>logwriting</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

2. 配置Quarkus跳过指定类的索引扫描

若无法排除依赖,直接在application.properties中配置跳过缺失类的索引:

# 跳过JMS相关类
quarkus.index.skip-classes=jakarta.jms.*
# 跳过Artemis日志类
quarkus.index.skip-classes=org.apache.activemq.artemis.core.journal.*
# 跳过Mashona类
quarkus.index.skip-classes=io.mashona.logwriting.ArrayStore

或通过依赖排除索引:

quarkus.index-dependency.jms.group-id=jakarta.jms
quarkus.index-dependency.jms.artifact-id=jakarta.jms-api
quarkus.index-dependency.jms.exclude=true

3. 检查触发源类的类型关联

警告指向MyResource.getAnotherResource()返回的AnotherResource类,检查该类的:

  • 继承/实现的接口是否包含JMS相关类型
  • 字段、泛型参数是否间接关联JMS类
    若存在不必要的关联,清理代码;若无法清理,给该类添加注解忽略缺失类的反射注册:
import io.quarkus.runtime.annotations.RegisterForReflection;

@RegisterForReflection(ignoreMissing = true)
public class AnotherResource {
    // 类内容
}

4. 添加空beans.xml切换索引模式

在src/main/resources/META-INF下创建空的beans.xml,让Quarkus调整索引扫描逻辑:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_4_0.xsd"
       version="4.0" bean-discovery-mode="annotated">
</beans>

5. 移除不必要的扩展

检查pom.xml/build.gradle,确认是否误引入了JMS相关扩展(如quarkus-artemis-jms),直接移除这些依赖。

内容的提问来源于stack exchange,提问作者nogridbag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 15:48:10