Eclipse无法选中Project Facets中的Dynamic Web Module求助
Eclipse启用Dynamic Web Module失败问题
我是Eclipse新手,尝试在Project Facets中启用Dynamic Web Module,但每次勾选后点击应用,该选项会自动取消勾选。已尝试切换不同版本、清理重建项目、创建新的Dynamic Web项目,但问题依旧。该项目是RESTful Web服务教程项目。
错误日志:
java.lang.RuntimeException: java.lang.NoSuchMethodError: 'org.eclipse.core.runtime.jobs.IJobManager org.eclipse.core.runtime.Platform.getJobManager()' at org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage.performOk(FacetsPropertyPage.java:289) at org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage.performApply(FacetsPropertyPage.java:313) at org.eclipse.jface.preference.PreferencePage.lambda$1(PreferencePage.java:289) at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4256) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4054) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3642) at org.eclipse.jface.window.Window.runEventLoop(Window.java:823) at org.eclipse.jface.window.Window.open(Window.java:799) at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:155) at org.eclipse.ui.internal.ide.actions.ProjectPropertyDialogAction.run(ProjectPropertyDialogAction.java:81) at org.eclipse.jface.action.Action.runWithEvent(Action.java:474) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580) at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:414) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4256) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4054) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3642) 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:643) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:550) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:171) 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:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) 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) at org.eclipse.equinox.launcher.Main.main(Main.java:1440) Caused by: java.lang.NoSuchMethodError: 'org.eclipse.core.runtime.jobs.IJobManager org.eclipse.core.runtime.Platform.getJobManager()' at org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper$FileAdapter.getSaveLock(WorkbenchResourceHelper.java:157) at org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper$FileAdapter.aquireSaveLock(WorkbenchResourceHelper.java:141) at org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper$FileAdapter.isConsistent(WorkbenchResourceHelper.java:213) at org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper.isConsistent(WorkbenchResourceHelper.java:314) at org.eclipse.wst.common.internal.emfworkbench.validateedit.ResourceStateValidatorImpl.getInconsistentResources(ResourceStateValidatorImpl.java:283) at org.eclipse.wst.common.internal.emfworkbench.validateedit.ResourceStateValidatorImpl.checkConsistency(ResourceStateValidatorImpl.java:150) at org.eclipse.wst.common.internal.emfworkbench.validateedit.ResourceStateValidatorImpl.checkActivation(ResourceStateValidatorImpl.java:75) at org.eclipse.wst.common.internal.emfworkbench.integration.EditModel.checkActivation(EditModel.java:628) at org.eclipse.wst.common.componentcore.internal.ModuleStructuralModel.checkActivation(ModuleStructuralModel.java:319) at org.eclipse.jst.j2ee.internal.listeners.ValidateEditListener.validateState(ValidateEditListener.java:255) at org.eclipse.jst.j2ee.internal.listeners.ValidateEditListener.validateState(ValidateEditListener.java:330) at org.eclipse.wst.common.componentcore.internal.StructureEdit.validateEdit(StructureEdit.java:972) at org.eclipse.wst.common.componentcore.internal.StructureEdit.saveIfNecessary(StructureEdit.java:395) at org.eclipse.wst.common.componentcore.internal.resources.VirtualComponent.create(VirtualComponent.java:373) at org.eclipse.jst.j2ee.web.project.facet.WebFacetInstallDelegate.execute(WebFacetInstallDelegate.java:100) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.callDelegate(FacetedProject.java:1477) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.modifyInternal(FacetedProject.java:441) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.mergeChangesInternal(FacetedProject.java:1181) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.access$2(FacetedProject.java:1117) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject$5.run(FacetedProject.java:1099) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2380) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2405) at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.mergeChanges(FacetedProject.java:1109) at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.commitChanges(FacetedProjectWorkingCopy.java:2020) at org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage$4.run(FacetsPropertyPage.java:232) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2380) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2405) at org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage$5.run(FacetsPropertyPage.java:246) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)
解决方法:
- 匹配Eclipse与WTP版本:确保安装的Web Tools Platform(WTP)插件和当前Eclipse版本完全对应,版本不兼容会导致核心方法找不到。建议直接下载Eclipse IDE for Enterprise Java and Web Developers,它内置了适配好的WTP组件,避免手动安装插件的冲突。
- 检查JDK版本兼容性:部分旧版WTP插件不支持JDK17及以上版本,可尝试切换到JDK8或JDK11,在项目属性和Eclipse全局配置中统一JDK版本。
- 手动修改项目配置:找到项目根目录下的
.settings/org.eclipse.wst.common.project.facet.core.xml文件,添加或修改Dynamic Web Module的配置,示例如下:
保存文件后刷新项目,重新同步配置。<?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <installed facet="java" version="11"/> <installed facet="jst.web" version="4.0"/> <installed facet="wst.jsdt.web" version="1.0"/> </faceted-project> - 清理Eclipse缓存:删除工作区目录下的
.metadata/.plugins/org.eclipse.core.resources/.history文件夹,重启Eclipse后执行Project > Clean操作,重建项目。 - 重新安装Eclipse:如果上述方法无效,直接卸载当前Eclipse,下载对应版本的官方安装包,避免插件残留或损坏导致的问题。
内容的提问来源于stack exchange,提问作者Brian Salomone
相关产品推荐
相关产品推荐

