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

Maven构建因JDT依赖报错:org.osgi.service.prefs无可用版本

问题根因

从报错链路和pom配置看,问题核心出在三点:

  • 你仅在<dependencies>中手动声明Eclipse系列组件版本,没有做全局版本锁定,Maven依赖调解规则没有按你声明的版本拉取组件:报错链路显示实际解析到的是org.eclipse.core.resources:3.12.0、org.eclipse.equinox.preferences:3.10.0,并非你手动配置的3.14.0和3.9.0,这两个低版本组件依赖的org.osgi.service:org.osgi.service.prefs版本区间为[1.1.0,1.2.0),版本匹配失败。
  • 你手动选择的Eclipse Platform组件版本跨度极大,从3.7.x到3.20.x横跨十余个发行版,Eclipse平台组件本身是同批次迭代、强版本绑定的,跨版本混搭必然出现依赖树混乱的问题。
  • 你手动添加1.1.0版本的osgi偏好包无效,是因为传递依赖的版本区间规则会做全局校验,没有排除传递依赖中的版本约束的话,Maven还是会优先按传递依赖的版本区间做匹配,不会直接使用你声明的版本。
可行解决方案

按稳定性从高到低选择:

方案1:引入Eclipse BOM统一管理版本(推荐)

不用手动逐个指定Eclipse组件版本,通过官方BOM自动对齐同版本的配套依赖,从根源避免版本混乱:

  1. 在pom.xml中添加<dependencyManagement>节点,引入和你使用的org.eclipse.jdt.core:3.20.0配套的平台BOM:
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.eclipse.platform</groupId>
            <artifactId>org.eclipse.platform</artifactId>
            <version>3.20.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
  1. 把原来<dependencies>下所有org.eclipse.platform开头的依赖的<version>标签全部删掉,版本由BOM自动导入,不需要手动维护。
  2. 执行mvn clean install -U强制更新依赖后构建即可。

方案2:手动锁死依赖+排除冲突约束

如果不想引入BOM,就手动把冲突的传递依赖全部排除,强制使用指定版本:

  1. 给所有Eclipse相关依赖添加排除规则,去掉传递依赖中对org.osgi.service.prefs的版本约束,以jdt核心依赖为例:
<dependency>
    <groupId>org.eclipse.jdt</groupId>
    <artifactId>org.eclipse.jdt.core</artifactId>
    <version>3.20.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.osgi.service</groupId>
            <artifactId>org.osgi.service.prefs</artifactId>
        </exclusion>
    </exclusions>
</dependency>

对org.eclipse.core.resources、org.eclipse.equinox.preferences、org.eclipse.core.runtime这几个会传递引入该osgi包的依赖,都加上上面的排除规则。
2. 显式在dependencies中添加1.1.0版本的osgi偏好包:

<dependency>
    <groupId>org.osgi.service</groupId>
    <artifactId>org.osgi.service.prefs</artifactId>
    <version>1.1.0</version>
</dependency>
  1. 把所有Eclipse平台组件的版本统一对齐到同一个发行版,不要跨大版本混搭,全部用3.20.x系列对应的配套版本,避免其他依赖冲突。

补充排查项

如果上面操作后还是提示找不到版本,先做两项检查:

  • 执行mvn dependency:tree -Dincludes=org.osgi.service:org.osgi.service.prefs查看实际解析的依赖路径,确认没有漏排除的传递依赖。
  • 检查settings.xml中的镜像配置,如果使用的是公共镜像,可能存在部分冷门版本包同步不全的问题,切换镜像或强制更新依赖后重试。

内容的提问来源于stack exchange,提问作者Rick.X

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:33:24