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

Eclipse配置Hibernate创建cfg文件触发类型转换异常求助

问题

在Eclipse 2024-6中配置Hibernate时,创建cfg文件触发未处理事件循环异常,具体报错为java.lang.ClassCastException:org.eclipse.jdt.internal.core.JavaNature无法转换为org.eclipse.jdt.core.IJavaProject。

环境配置:

  • MySQL Connector/J 8.3.0
  • Jboss 4.29.1 Final
  • JDK22

已尝试删除.m2文件夹、使用clean命令启动Eclipse,问题仍未解决。

报错详情:

eclipse.buildId=4.32.0.20240606-1231
java.version=22.0.1
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=it_IT
Framework arguments:  -product org.eclipse.epp.package.jee.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product -clean

org.eclipse.ui
Error
Mon Aug 05 14:49:29 CEST 2024
Unhandled event loop exception

java.lang.ClassCastException: class org.eclipse.jdt.internal.core.JavaNature cannot be cast to class org.eclipse.jdt.core.IJavaProject (org.eclipse.jdt.internal.core.JavaNature and org.eclipse.jdt.core.IJavaProject are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @529500a7)
    at org.hibernate.eclipse.console.wizards.NewConfigurationWizard.init(NewConfigurationWizard.java:325)
    at org.eclipse.ui.internal.dialogs.WorkbenchWizardNode.getWizard(WorkbenchWizardNode.java:164)
    at org.eclipse.jface.wizard.WizardSelectionPage.getNextPage(WizardSelectionPage.java:110)
    at org.eclipse.ui.internal.dialogs.WorkbenchWizardSelectionPage.getNextPage(WorkbenchWizardSelectionPage.java:98)
    at org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDialog.java:915)
    at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:470)
    at org.eclipse.jface.dialogs.Dialog.lambda$0(Dialog.java:619)
    at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:265)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4285)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1160)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4083)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3673)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:823)
    at org.eclipse.jface.window.Window.open(Window.java:799)
    at org.eclipse.ui.internal.handlers.WizardHandler$New.executeHandler(WizardHandler.java:261)
    at org.eclipse.ui.internal.handlers.WizardHandler.execute(WizardHandler.java:279)
    at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:277)
    at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:98)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:299)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:233)
    at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:174)
    at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:165)
    at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
    at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:485)
    at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:204)
    at org.eclipse.ui.internal.handlers.LegacyHandlerService.executeCommand(LegacyHandlerService.java:385)
    at org.eclipse.ui.internal.actions.CommandAction.runWithEvent(CommandAction.java:141)
    at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:581)
    at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:415)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4285)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1160)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4083)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3673)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:152)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1454)
解决方案
  • 降级JDK版本:JDK22属于较新的非LTS版本,Hibernate Eclipse插件大概率未完成适配。建议切换到JDK17(LTS版本):
    1. 安装JDK17并配置系统环境变量
    2. 在Eclipse中打开Window > Preferences > Java > Installed JREs,添加JDK17并设置为默认
    3. 修改项目配置:右键项目 > Properties > Java Build Path > Libraries,替换JRE System Library为JDK17;再进入Java Compiler页面,将Compiler compliance level设为17
  • 更新Hibernate Eclipse插件:当前插件版本可能与Eclipse 2024-6不兼容,尝试更新:
    1. 打开Help > Eclipse Marketplace,搜索Hibernate Tools
    2. 点击更新按钮,安装最新兼容版本
  • 手动创建配置文件:绕开插件向导的问题,直接手动生成hibernate.cfg.xml:
    1. 在项目的src/main/resources目录下新建XML文件
    2. 粘贴Hibernate配置模板,填写数据库连接URL、用户名、密码、方言等参数
  • 检查项目Java Nature配置:确认项目已正确添加Java特性:
    1. 右键项目 > Properties > Project Facets,确保Java选项已勾选并应用
    2. 若未勾选,勾选后点击Apply保存,重启Eclipse

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 05:30:56