期间发生内部错误:“从选择中请求 Java AST”。java.lang.NoSuchMethodError: com.ibm.icu.text.UTF16.isSurrogate(C)Z

bul*_*ous 7 java eclipse

我在用着

  • eclipse.buildId=4.24.0.I20220607-0700
  • java.version=11.0.17。
  • BootLoader 常量:OS=macosx、ARCH=aarch64、WS=cocoa

错误:“从选择中请求 Java AST”期间发生内部错误。java.lang.NoSuchMethodError: com.ibm.icu.text.UTF16.isSurrogate(C)Z

在eclipse上下载Oracle WebLogic Server Tools插件(17.3.0.201903121357)后出现此错误。

据我了解,可能是因为ICU4J有两个版本,而72v只有这个方法boolean isSurrogate(int codePoint),没有boolean isSurrogate(char char16)

安装了两个版本的icu4j

有谁知道如何在不将 eclipse 升级到 4.25 的情况下解决这个问题?看来 4.24 是支持 Java 11 的最新版本。

我已经尝试手动删除 ICU4J 72 插件,但它从我的 Eclipse 中删除了 Maven。

完整错误日志:

期间发生内部错误:“从选择中请求 Java AST”。java.lang.NoSuchMethodError:com.ibm.icu.text.UTF16.isSurrogate(C)Z 位于 org.eclipse.jdt.internal.ui.text.JavaWordFinder.findWord(JavaWordFinder.java:39) 位于 org.eclipse.jdt .internal.ui.javaeditor.JavaEditor.updateOccurrenceAnnotations(JavaEditor.java:3300) 位于 org.eclipse.jdt.internal.ui.javaeditor.JavaEditor.lambda$4(JavaEditor.java:3363) 位于 org.eclipse.jdt.internal。 ui.viewsupport.SelectionListenerWithASTManager$PartListenerGroup.calculateASTandInform(SelectionListenerWithASTManager.java:175) 在 org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$PartListenerGroup$1.run(SelectionListenerWithASTManager.java:151) 在 org.eclipse.core.internal .jobs.Worker.run(Worker.java:63)

从插件调用代码时出现问题:“org.eclipse.ui.workbench”。java.lang.NoSuchMethodError:com.ibm.icu.text.UTF16.isSurrogate(C)Z 位于 org.eclipse.jdt.internal.ui.text.JavaWordFinder.findWord(JavaWordFinder.java:39) 位于 org.eclipse.jdt .internal.ui.javaeditor.JavaEditor.updateOccurrenceAnnotations(JavaEditor.java:3300) 位于 org.eclipse.jdt.internal.ui.javaeditor.JavaEditor$ActivationListener.windowActivated(JavaEditor.java:1216) 位于 org.eclipse.ui.internal .Workbench$8.run(Workbench.java:1005) 在 org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) 在 org.eclipse.ui.internal.Workbench.fireWindowActivated(Workbench.java:1002)在 org.eclipse.ui.internal.WorkbenchWindow$6.shellActivated(WorkbenchWindow.java:2459) 在 org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:92) 在 org.eclipse.swt.widgets.EventTable。 sendEvent(EventTable.java:89) 在 org.eclipse.swt.widgets.Display.sendEvent(Display.java:4604) 在 org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524) 在 org.eclipse .swt.widgets.Widget.sendEvent(Widget.java:1547) 在 org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1528) 在 org.eclipse.swt.widgets.Shell.windowDidBecomeKey(Shell.java :2314)在org.eclipse.swt.widgets.Display.windowProc(Display.java:6373)在org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(本机方法)在org.eclipse.swt.widgets.Widget .callSuper(Widget.java:229) 在 org.eclipse.swt.widgets.Widget.becomeKeyWindow(Widget.java:390) 在 org.eclipse.swt.widgets.Shell.becomeKeyWindow(Shell.java:533) 在 org. eclipse.swt.widgets.Display.windowProc(Display.java:6092) 在 org.eclipse.swt.internal.cocoa.OS.objc_msgSend(本机方法) 在 org.eclipse.swt.internal.cocoa.NSWindow.close(NSWindow) .java:57) 在 org.eclipse.swt.widgets.Shell.destroyWidget(Shell.java:819) 在 org.eclipse.swt.widgets.Widget.release(Widget.java:1373) 在 org.eclipse.swt。 widgets.Control.release(Control.java:2970) 在 org.eclipse.swt.widgets.Widget.dispose(Widget.java:695) 在 org.eclipse.jface.window.Window.close(Window.java:335)在 org.eclipse.jface.dialogs.Dialog.close(Dialog.java:988) 在 org.eclipse.ui.internal.statushandlers.InternalDialog.close(InternalDialog.java:651) 在 org.eclipse.jface.window.Window .handleShellCloseEvent(Window.java:739) 在 org.eclipse.jface.dialogs.TrayDialog.handleShellCloseEvent(TrayDialog.java:220) 在 org.eclipse.jface.window.Window$1.shellClosed(Window.java:685) 在 org .eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:102) 在 org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) 在 org.eclipse.swt.widgets.Display.sendEvent(Display .java:4604) 在 org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524) 在 org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1547) 在 org.eclipse.swt。 widgets.Widget.sendEvent(Widget.java:1532) 在 org.eclipse.swt.widgets.Shell.closeWidget(Shell.java:624) 在 org.eclipse.swt.widgets.Shell.windowShouldClose(Shell.java:2518)在 org.eclipse.swt.widgets.Display.windowProc(Display.java:

nit*_*ind 4

4.25和4.26都支持Java 11开发,它们只是有需要Java 17才能正常运行的组件。您可以从https://adoptium.net/temurin/releases/下载兼容的 JDK 。

如果有更新的 WebLogic 插件,您也应该获取它。版本 17.3.0.201903121357 表示 2019 年的版本。

  • 建议使用 Java 17 来运行 Eclipse,而不是 Java 11。这并不妨碍您针对 Java 11 进行开发。 (2认同)
  • 是的,尽管您也可以在项目级别进行设置,以便在处理多个项目时拥有更大的灵活性。 (2认同)