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

Eclipse 2024-12更新后Windows无法启动:模块依赖问题求助

Eclipse更新后启动失败的问题排查与修复

问题背景

更新Eclipse后程序无法启动,通过-Console和-ConsoleLog参数启动获取日志,核心问题为关键模块加载失败,日志详情如下:

WARNING: Using incubator modules: jdk.incubator.vector
Dec 17, 2024 2:33:31 PM org.apache.aries.spifly.BaseActivator log
INFO: Registered provider org.slf4j.simple.SimpleServiceProvider of service org.slf4j.spi.SLF4JServiceProvider in bundle slf4j.simple
!SESSION 2024-12-17 14:33:23.006 -----------------------------------------------
eclipse.buildId=4.34.0.20241128-0756
java.version=21.0.3
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_AU
Framework arguments:  -product org.eclipse.epp.package.cpp.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.cpp.product -console -consoleLog

!ENTRY org.eclipse.cbi.targetplatform 4 0 2024-12-17 14:33:32.443
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Could not resolve module: org.eclipse.cbi.targetplatform [304]
  Unresolved requirement: Require-Bundle: org.eclipse.xtext
    -> Bundle-SymbolicName: org.eclipse.xtext; bundle-version="2.25.0.v20210301-0843"; singleton="true"
       org.eclipse.xtext [1858]
         Unresolved requirement: Require-Bundle: org.eclipse.xtext.util; visibility="reexport"
           -> Bundle-SymbolicName: org.eclipse.xtext.util; bundle-version="2.25.0.v20210301-0843"
              org.eclipse.xtext.util [1881]
                Unresolved requirement: Require-Bundle: com.google.guava; bundle-version="[30.1.0,31.0.0)"; visibility="reexport"
                  -> Bundle-SymbolicName: com.google.guava; bundle-version="30.1.0.v20221112-0806"
                     com.google.guava [49]
                       Unresolved requirement: Import-Package: com.google.errorprone.annotations; version="[3.0.0,4.0.0)"; resolution="optional"
                       Unresolved requirement: Import-Package: com.google.errorprone.annotations.concurrent; version="[3.0.0,4.0.0)"; resolution="optional"
                       Unresolved requirement: Import-Package: javax.crypto; version="[3.0.0,4.0.0)"; resolution="optional"
                       Unresolved requirement: Import-Package: javax.crypto.spec; version="[3.0.0,4.0.0)"; resolution="optional"
                       Unresolved requirement: Import-Package: org.checkerframework.checker.nullness.qual; version="[3.5.0,4.0.0)"; resolution="optional"
                Unresolved requirement: Import-Package: org.apache.log4j; version="1.2.15"
                  -> Export-Package: org.apache.log4j; bundle-symbolic-name="org.apache.log4j"; bundle-version="1.2.15.v201012070815"; version="1.2.15"
                     org.apache.log4j [248]
                       No resolution report for the bundle.                Unresolved requirement: Require-Bundle: org.eclipse.xtend.lib
                  -> Bundle-SymbolicName: org.eclipse.xtend.lib; bundle-version="2.36.0.v20240825-0714"
                     org.eclipse.xtend.lib [1848]
                       Unresolved requirement: Require-Bundle: org.eclipse.xtend.lib.macro; bundle-version="2.36.0"; visibility="reexport"
                         -> Bundle-SymbolicName: org.eclipse.xtend.lib.macro; bundle-version="2.36.0.v20240825-0714"
                            org.eclipse.xtend.lib.macro [1849]
                              No resolution report for the bundle.         Unresolved requirement: Import-Package: org.apache.log4j; version="1.2.15"
           -> Export-Package: org.apache.log4j; bundle-symbolic-name="org.apache.log4j"; bundle-version="1.2.15.v201012070815"; version="1.2.15"
         Unresolved requirement: Require-Bundle: org.objectweb.asm; bundle-version="[9.1.0,9.2.0)"; resolution="optional"
           -> Bundle-SymbolicName: org.objectweb.asm; bundle-version="9.1.0.v20210209-1849"
              org.objectweb.asm [2054]
                No resolution report for the bundle.         Unresolved requirement: Require-Bundle: org.eclipse.xtend.lib; resolution="optional"
           -> Bundle-SymbolicName: org.eclipse.xtend.lib; bundle-version="2.36.0.v20240825-0714"
  Unresolved requirement: Import-Package: org.apache.log4j
    -> Export-Package: org.apache.log4j; bundle-symbolic-name="org.apache.log4j"; bundle-version="1.2.15.v201012070815"; version="1.2.15"
  Unresolved requirement: Require-Bundle: org.eclipse.xtext.util
    -> Bundle-SymbolicName: org.eclipse.xtext.util; bundle-version="2.25.0.v20210301-0843"
  Unresolved requirement: Require-Bundle: org.eclipse.xtend.lib
    -> Bundle-SymbolicName: org.eclipse.xtend.lib; bundle-version="2.36.0.v20240825-0714"
  Bundle was not resolved because of a uses constraint violation.
  org.apache.felix.resolver.reason.ReasonException: Uses constraint violation. Unable to resolve resource org.eclipse.cbi.targetplatform [osgi.identity; type="osgi.bundle"; version:Version="3.1.0.202409011232"; osgi.identity="org.eclipse.cbi.targetplatform"; singleton="true"] because it is exposed to package 'com.google.common.util.concurrent.internal' from resources com.google.guava [osgi.identity; type="osgi.bundle"; version:Version="30.1.0.v20221112-0806"; osgi.identity="com.google.guava"] and com.google.guava.failureaccess [osgi.identity; type="osgi.bundle"; version:Version="1.0.2"; osgi.identity="com.google.guava.failureaccess"] via two dependency chains.

Chain 1:
  org.eclipse.cbi.targetplatform [osgi.identity; type="osgi.bundle"; version:Version="3.1.0.202409011232"; osgi.identity="org.eclipse.cbi.targetplatform"; singleton="true"]
    require: (osgi.wiring.bundle=org.eclipse.xtext)
     |
    provide: osgi.wiring.bundle: org.eclipse.xtext
  com.google.guava [osgi.identity; type="osgi.bundle"; version:Version="30.1.0.v20221112-0806"; osgi.identity="com.google.guava"]

Chain 2:
  org.eclipse.cbi.targetplatform [osgi.identity; type="osgi.bundle"; version:Version="3.1.0.202409011232"; osgi.identity="org.eclipse.cbi.targetplatform"; singleton="true"]
    require: (&(osgi.wiring.bundle=org.eclipse.xtext.xbase.lib)(bundle-version>=2.14.0))
     |
    provide: osgi.wiring.bundle; bundle-version:Version="2.37.0.v20241119-0857"; osgi.wiring.bundle="org.eclipse.xtext.xbase.lib"
  com.google.guava [osgi.identity; type="osgi.bundle"; version:Version="33.3.1.jre"; osgi.identity="com.google.guava"]
    import: (&(osgi.wiring.package=com.google.common.util.concurrent.internal)(&(version>=1.0.0)(!(version>=2.0.0))))
     |
    export: osgi.wiring.package: com.google.common.util.concurrent.internal
  com.google.guava.failureaccess [osgi.identity; type="osgi.bundle"; version:Version="1.0.2"; osgi.identity="com.google.guava.failureaccess"]
        at org.eclipse.osgi.container.Module.start(Module.java:493)
        at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$2.run(ModuleContainer.java:2102)
        at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$1$1.execute(EquinoxContainerAdaptor.java:143)
        at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:2093)
        at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:2033)
        at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1996)
        at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1912)
        at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:341)

问题根源

日志中明确指出Uses constraint violation(使用约束冲突):

  • Eclipse插件目录中同时存在两个版本的com.google.guava Bundle:30.1.0.v20221112-0806和33.3.1.jre
  • org.eclipse.cbi.targetplatform模块通过两条依赖链,分别从这两个版本的Guava中获取com.google.common.util.concurrent.internal包
  • OSGi的 resolver 无法解决这种包版本冲突,导致核心模块无法解析,最终启动失败

日志中其他的可选依赖警告(比如com.google.errorprone.annotations、javax.crypto等)不影响启动,是次要问题。

修复方法

方法1:清理重复的Guava Bundle(优先推荐)

  1. 打开Eclipse安装目录下的plugins文件夹
  2. 搜索所有文件名包含com.google.guava的jar文件
  3. 找到两个版本:com.google.guava_30.1.0.v20221112-0806.jar和com.google.guava_33.3.1.jre.jar
  4. 保留版本更高的33.3.1.jre版本,将旧版本的jar文件移动到备份文件夹(不要直接删除,方便回滚)
  5. 启动Eclipse,验证是否正常加载
  6. 如果启动仍有问题,添加-clean参数清理缓存:eclipse.exe -clean

方法2:禁用冲突模块(如果方法1无效)

如果org.eclipse.cbi.targetplatform不是你的工作必需模块,可以直接禁用它:

  1. 打开Eclipse安装目录下的configuration/config.ini文件
  2. 在文件末尾添加一行:org.eclipse.cbi.targetplatform@start=false
  3. 保存文件后重启Eclipse

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:17:33