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

Java中Derby Driver类未找到异常问题求助

解决方案

1. 检查Maven依赖的scope配置

确保pom.xml中derbyclient依赖的scope未被错误设置为provided或test(这两类依赖不会被打包到项目的WEB-INF/lib目录)。正确配置示例:

<dependency>
    <groupId>org.apache.derby</groupId>
    <artifactId>derbyclient</artifactId>
    <version>你的Derby版本号</version>
    <!-- 保持默认compile scope即可,无需额外设置 -->
</dependency>

2. 确保Maven打包时将依赖复制到WEB-INF/lib

  • 打开IntelliJ的Maven侧边栏,依次执行clean和package命令,解压target目录下生成的war包,检查WEB-INF/lib中是否存在derbyclient-xxx.jar。
  • 若直接在IntelliJ中部署Tomcat运行:
    1. 进入Run > Edit Configurations,找到你的Tomcat配置
    2. 切换到Deployment标签页,确认部署的是xxx:war exploded模式
    3. 切换到Server标签页,勾选After launch旁的Build Artifacts,确保构建目标为正确的war exploded包

3. 临时方案:手动添加依赖到Tomcat全局lib

将derbyclient-xxx.jar复制到/opt/tomcat/lib目录,重启Tomcat。此方式会让Tomcat全局类加载器加载驱动,但不推荐长期使用(会污染Tomcat全局依赖环境)。

4. 验证驱动类名正确性

确认使用的org.apache.derby.jdbc.ClientDriver与你安装的Derby版本匹配,避免混淆嵌入式驱动(类名为org.apache.derby.jdbc.EmbeddedDriver)。

5. 检查运行时类加载路径

在Servlet中添加代码,打印当前上下文类加载器的路径,确认项目WEB-INF/lib是否被加载:

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL[] urls = ((URLClassLoader) classLoader).getURLs();
for (URL url : urls) {
    System.out.println(url.getFile());
}

若输出包含项目WEB-INF/lib路径且存在derbyclient jar,则类加载环境正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:58:14