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

安装Spring Boot后Eclipse出现java.lang.NoSuchMethodError错误求助

Eclipse安装Spring Boot后报错"requesting java ast from selection"的解决办法

问题详情

安装Spring Boot插件到Eclipse后,弹出错误提示requesting java ast from selection。卸载Spring Boot插件、升级Java版本后,问题依然存在。错误日志核心内容如下:

!ENTRY org.eclipse.ui.workbench 4 2 2022-12-14 10:58:58.294
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.ui.workbench".
!STACK 0
java.lang.NoSuchMethodError: com.ibm.icu.text.UTF16.isSurrogate(C)Z
    at org.eclipse.jdt.internal.ui.text.JavaWordFinder.findWord(JavaWordFinder.java:39)
    at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor.updateOccurrenceAnnotations(JavaEditor.java:3300)
    at org.eclipse.jdt.internal.ui.javaeditor.JavaEditor$ActivationListener.windowActivated(JavaEditor.java:1216)
    at org.eclipse.ui.internal.Workbench$8.run(Workbench.java:1005)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.ui.internal.Workbench.fireWindowActivated(Workbench.java:1002)
    at org.eclipse.ui.internal.WorkbenchWindow$6.shellActivated(WorkbenchWindow.java:2459)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:92)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4251)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1090)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1075)
    at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE(Decorations.java:1521)
    at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(Shell.java:2314)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4743)
    at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340)
    at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1480)
    at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2286)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:5026)
    at org.eclipse.swt.internal.win32.OS.DestroyWindow(Native Method)
    at org.eclipse.swt.widgets.Control.destroyWidget(Control.java:782)
    at org.eclipse.swt.widgets.Shell.destroyWidget(Shell.java:732)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:831)
    at org.eclipse.swt.widgets.Widget.dispose(Widget.java:428)
    at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:392)
    at org.eclipse.jface.window.Window.close(Window.java:335)
    at org.eclipse.jface.dialogs.Dialog.close(Dialog.java:988)
    at org.eclipse.ui.internal.statushandlers.InternalDialog.close(InternalDialog.java:651)
    at org.eclipse.jface.window.Window.handleShellCloseEvent(Window.java:739)
    at org.eclipse.jface.dialogs.TrayDialog.handleShellCloseEvent(TrayDialog.java:220)
    at org.eclipse.jface.window.Window$1.shellClosed(Window.java:685)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:102)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4251)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1090)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1075)
    at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:269)
    at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1552)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4748)
    at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340)
    at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1480)
    at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2286)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:5026)
    at org.eclipse.swt.internal.win32.OS.CallWindowProc(Native Method)
    at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:506)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4847)
    at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340)
    at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1480)
    at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2286)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:5026)
    at org.eclipse.swt.internal.win32.OS.CallWindowProc(Native Method)
    at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:506)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4847)
    at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340)
    at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1480)
    at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2286)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:5026)
    at org.eclipse.swt.internal.win32.OS.DispatchMessage(Native Method)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3643)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1467)

问题原因

这是ICU4J库版本冲突导致的:Eclipse的JDT组件依赖特定版本的ICU4J库,而Spring Boot插件可能引入了不同版本的ICU4J,或者Eclipse自带的ICU组件损坏、版本过低,导致找不到com.ibm.icu.text.UTF16.isSurrogate(C)Z方法。

解决步骤

1. 更新Eclipse的ICU4J组件

  • 打开Eclipse,点击帮助 > 安装新软件
  • 在"工作空间"下拉框选择当前Eclipse版本对应的官方更新站点(比如2022-12版本的更新站)
  • 搜索ICU4J,找到International Components for Unicode (ICU4J)相关组件,选择更新到最新兼容版本
  • 安装完成后重启Eclipse

2. 清理Eclipse插件缓存

  • 关闭Eclipse
  • 找到Eclipse安装目录下的configuration\org.eclipse.osgi文件夹,删除内部所有文件(保留文件夹本身)
  • 进入工作空间目录,删除.metadata\.plugins\org.eclipse.core.runtime下的所有文件
  • 重启Eclipse,让插件重新加载

3. 重新安装兼容版本的Spring Boot插件

  • 卸载现有Spring Boot插件:帮助 > 关于Eclipse > 安装详细信息,找到Spring Boot相关插件并卸载
  • 确认当前Eclipse版本,选择完全兼容的Spring Boot Tools版本(比如Eclipse 2022-12对应4.15.x版本)
  • 通过Eclipse Marketplace或官方更新站点重新安装,完成后重启Eclipse

4. 替换ICU4J jar包

  • 关闭Eclipse
  • 进入Eclipse安装目录的plugins文件夹,搜索com.ibm.icu_*.jar
  • 删除旧版本的ICU jar包,下载与当前Eclipse JDT兼容的ICU4J版本(比如Eclipse 2022-12对应69.1版本)
  • 将新jar包放入plugins文件夹,重启Eclipse

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:25:24