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

Java 8+Jersey 2.27+Jetty 9.4.9应用频繁出现多位置扫描警告

解决Jetty + Jersey 环境下的两类常见警告问题

你提到的这两个警告其实是Jetty和Jersey依赖冲突导致的典型问题,虽然不影响应用运行,但确实看着闹心,我给你拆解一下原因和解决办法:

一、Unrecognized runtime asm version, assuming 393216 警告

原因

Jetty的AnnotationParser组件依赖ASM库来处理字节码和注解,而你的项目里可能同时引入了Jetty自带的ASM和Jersey依赖里的ASM,两者版本不匹配。Jetty 9.4.9预期的ASM版本是7.x左右(版本号393216对应ASM 7.0的标识),如果Jersey带的是更低版本的ASM,就会触发这个警告。

解决办法

在你的构建脚本(Maven或Gradle)里统一ASM版本,或者排除Jersey依赖中冲突的ASM模块:

Maven 示例

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-jetty-http</artifactId>
    <version>2.27</version>
    <exclusions>
        <!-- 排除Jersey自带的ASM依赖 -->
        <exclusion>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-commons</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 引入Jetty兼容的ASM版本 -->
<dependency>
    <groupId>org.ow2.asm</groupId>
    <artifactId>asm</artifactId>
    <version>7.0</version>
</dependency>
<dependency>
    <groupId>org.ow2.asm</groupId>
    <artifactId>asm-commons</artifactId>
    <version>7.0</version>
</dependency>

Gradle 示例

dependencies {
    implementation('org.glassfish.jersey.containers:jersey-container-jetty-http:2.27') {
        exclude group: 'org.ow2.asm', module: 'asm'
        exclude group: 'org.ow2.asm', module: 'asm-commons'
    }
    implementation 'org.ow2.asm:asm:7.0'
    implementation 'org.ow2.asm:asm-commons:7.0'
}

二、javax.el.ArrayELResolver scanned from multiple locations 警告

原因

这个警告是因为javax.el.ArrayELResolver类被多个jar包同时包含了,通常是Jetty的jetty-jsp模块和Jersey的依赖(比如javax.el-api)重复引入了EL相关类,导致类加载器扫描到重复的类定义。

解决办法

找到重复引入的EL依赖,排除其中一个即可。如果你的项目不需要JSP支持,可以直接排除Jetty的jetty-jsp模块;如果需要JSP,就排除Jersey侧的EL依赖:

Maven 示例(排除Jetty的JSP模块)

<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-server</artifactId>
    <version>9.4.9.v20180320</version>
    <exclusions>
        <exclusion>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-jsp</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Gradle 示例(排除Jersey的EL依赖)

dependencies {
    implementation('org.glassfish.jersey.containers:jersey-container-jetty-http:2.27') {
        exclude group: 'javax.el', module: 'javax.el-api'
    }
}

额外建议

你可以用构建工具的依赖分析命令来排查冲突,比如Maven的mvn dependency:tree或者Gradle的./gradlew dependencies,这样能更清晰地看到哪个依赖引入了冲突的jar包,针对性排除更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:55:46