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

Eclipse启动Tomcat时报错java.lang.NoClassDefFoundError: java/sql/Driver

问题根因

  • 你使用的Java 11为模块化JDK,java.sql.Driver类归属于JDK内置的java.sql模块,该模块默认不在引导类加载器(Bootstrap ClassLoader)的加载范围内
  • 启动日志中显示的-Xbootclasspath参数将mysql-connector-java 8.0.26交由引导类加载器加载,驱动依赖的java.sql.Driver对该类加载器不可见,因此抛出NoClassDefFoundError
  • 你在启动配置中找不到该参数,是因为参数由Eclipse Servers组件或项目本地配置自动注入,并非手动配置的启动参数

解决方案

第一步:移除自动注入的-Xbootclasspath配置

按以下路径排查隐藏的参数配置:

  1. 打开Eclipse的Servers视图,右键当前使用的Tomcat实例,选择Open
  2. 点击页面中的Open launch configuration选项,切换到Environment标签页,删除所有包含Xbootclasspath的环境变量配置
  3. 进入项目根目录的.settings文件夹,打开org.eclipse.wst.server.core.prefs文件,删除所有包含Xbootclasspath的配置行,重启Eclipse后重试

第二步:调整mysql驱动的加载范围

mysql-connector-java 8.x版本无需放入引导类路径,按规则配置即可:

  • 若数据源配置在Tomcat的context.xml中,仅保留Tomcat lib目录下的mysql-connector-java-8.0.26.jar,删除项目WEB-INF/lib目录下的同版本驱动包,避免类冲突
  • 若使用Maven管理依赖,将驱动的scope设置为provided,示例配置如下:
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
    <scope>provided</scope>
</dependency>

第三步:添加模块暴露配置(可选)

如果完成前两步后仍报错,在Tomcat启动的VM参数中添加模块化配置:
打开Run Configurations->Arguments标签,在VM arguments输入框中添加以下参数:
--add-modules java.sql
保存配置后重启Tomcat即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:45:07