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

构建Spring Boot 3+GlassFish Jersey时Maven报“bad path element”问题

问题描述

在构建Spring Boot 3.0.6应用并集成GlassFish Jersey(版本3.1.1)时,Maven抛出异常警告:

[path] bad path element "/home/rmuller/.m2/repository/org/glassfish/hk2/hk2/3.0.3/hk2-utils.jar": no such file or directory

该文件的实际正确路径应为:

/home/rmuller/.m2/repository/org/glassfish/hk2/hk2-utils/3.0.3/hk2-utils-3.0.3.jar

已知可屏蔽该警告,但需了解根本原因;且已清理.m2目录,问题仍未解决。当前Maven依赖树如下:

+- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:3.1.1:compile
|  |  +- jakarta.inject:jakarta.inject-api:jar:2.0.1:compile
|  |  +- org.glassfish.jersey.core:jersey-common:jar:3.1.1:compile
|  |  |  \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.3:compile
|  |  \- jakarta.ws.rs:jakarta.ws.rs-api:jar:3.1.0:compile
|  +- org.glassfish.jersey.containers:jersey-container-servlet:jar:3.1.1:compile
|  +- org.glassfish.jersey.core:jersey-server:jar:3.1.1:compile
|  |  +- org.glassfish.jersey.core:jersey-client:jar:3.1.1:compile
|  |  \- jakarta.validation:jakarta.validation-api:jar:3.0.2:compile
|  +- org.glassfish.jersey.ext:jersey-bean-validation:jar:3.1.1:compile
|  |  \- org.jboss.logging:jboss-logging:jar:3.5.0.Final:compile
|  +- org.glassfish.jersey.ext:jersey-spring6:jar:3.1.1:compile
|  |  +- org.glassfish.jersey.inject:jersey-hk2:jar:3.1.1:compile
|  |  |  +- org.glassfish.hk2:hk2-locator:jar:3.0.3:compile
|  |  |  |  \- org.glassfish.hk2.external:aopalliance-repackaged:jar:3.0.3:compile
|  |  |  \- org.javassist:javassist:jar:3.29.0-GA:compile
|  |  +- org.glassfish.hk2:hk2:jar:3.0.3:compile
|  |  |  +- org.glassfish.hk2:hk2-utils:jar:3.0.3:compile
|  |  |  +- org.glassfish.hk2:hk2-api:jar:3.0.3:compile
|  |  |  +- org.glassfish.hk2:hk2-core:jar:3.0.3:compile
|  |  |  +- org.glassfish.hk2:hk2-runlevel:jar:3.0.3:compile
|  |  |  \- org.glassfish.hk2:class-model:jar:3.0.3:compile
|  |  |     +- org.ow2.asm:asm-analysis:jar:9.2:compile
|  |  |     +- org.ow2.asm:asm-commons:jar:9.2:compile
|  |  |     +- org.ow2.asm:asm-tree:jar:9.2:compile
|  |  |     \- org.ow2.asm:asm-util:jar:9.2:compile
|  |  \- org.glassfish.hk2:spring-bridge:jar:3.0.3:compile

根本原因分析

从依赖树可见,org.glassfish.hk2:hk2:3.0.3是一个聚合jar(由pom打包类型项目生成),其pom文件的依赖路径配置存在失误:声明hk2-utils依赖时,错误将jar的查找路径指向了hk2模块的目录下,而非hk2-utils自身的模块目录。

这类问题属于HK2组件发布阶段的打包配置错误,Maven解析该聚合jar的依赖时,会基于错误的配置生成不符合本地仓库规范的路径。即使清理.m2目录重新下载依赖,hk2的pom配置错误依然存在,因此问题会重复出现。

解决方法

  • 排除错误聚合jar,手动引入独立模块
    在jersey-spring6的依赖中排除org.glassfish.hk2:hk2:3.0.3,然后手动添加实际需要的hk2独立模块依赖,让Maven从正确路径加载jar包:

    <dependency>
        <groupId>org.glassfish.jersey.ext</groupId>
        <artifactId>jersey-spring6</artifactId>
        <version>3.1.1</version>
        <exclusions>
            <exclusion>
                <groupId>org.glassfish.hk2</groupId>
                <artifactId>hk2</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- 手动添加hk2的各个独立模块 -->
    <dependency>
        <groupId>org.glassfish.hk2</groupId>
        <artifactId>hk2-utils</artifactId>
        <version>3.0.3</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.hk2</groupId>
        <artifactId>hk2-api</artifactId>
        <version>3.0.3</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.hk2</groupId>
        <artifactId>hk2-core</artifactId>
        <version>3.0.3</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.hk2</groupId>
        <artifactId>hk2-runlevel</artifactId>
        <version>3.0.3</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.hk2</groupId>
        <artifactId>class-model</artifactId>
        <version>3.0.3</version>
    </dependency>
    
  • 升级HK2到修复版本
    查看HK2官方发布记录,升级到已修复该路径配置错误的版本(如3.0.4及以上),可通过Spring Boot的依赖管理统一覆盖HK2版本:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.glassfish.hk2</groupId>
                <artifactId>hk2-bom</artifactId>
                <version>3.0.4</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:32:06