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

JDK 11下ClassNotFoundException: javax.annotation.Generated问题求助

问题分析与解决方案

这个问题我之前处理过,核心原因很明确:JDK 11 移除了 Java EE 相关的 javax.annotation 包,而你使用的 EclipseLink(NetBeans 默认的 JPA 实现)在生成实体类的规范模型时,依赖了javax.annotation.Generated类,编译时找不到这个类就抛出了NoClassDefFoundError。这确实和你用的 JDK 版本直接相关,但不是 JDK 本身有问题,是依赖缺失导致的。

下面给你两种可行的解决办法:

方法一:添加缺失的依赖包

因为 JDK 11 不再自带javax.annotation相关类,我们需要手动引入对应的依赖:

  • 下载javax.annotation-api-1.3.2.jar(官方标准的API包,选1.3.2版本即可)
  • 把下载好的jar包放到你的项目lib目录下
  • 在NetBeans中右键项目 → Properties → Libraries → Add JAR/Folder,选中刚才的jar包添加到项目依赖中
  • 重新执行清理并构建项目,应该就能正常编译了

方法二:禁用规范模型生成(更简单的方案)

如果你的项目不需要用到EclipseLink的规范模型(大部分普通JPA项目都不需要),可以直接关闭这个生成功能:

  • 右键项目 → Properties → Persistence
  • 在Canonical Model Generation区域,取消勾选Generate Canonical Model选项
  • 保存设置后重新清理构建项目,编译报错会直接消失

补充说明

从JDK 9开始,Oracle将Java EE相关的API从JDK中移除,放到了单独的仓库中。NetBeans默认的JPA实体生成工具会启用EclipseLink的规范模型生成,这个过程依赖了被移除的javax.annotation.Generated,所以在JDK 11环境下就会出现这个错误。上面两种方法都能解决问题,你可以根据自己的项目需求选择。

内容的提问来源于stack exchange,提问作者juran.maurice

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:47:29