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

TestNG执行Redshift连接代码遇java.sql.SQLException类找不到错误

解决TestNG测试中Redshift连接抛出java.lang.ClassNotFoundException: java.sql.SQLException的问题

以下是针对该问题的排查和解决步骤:

1. 检查Redshift JDBC依赖的作用域

Redshift JDBC驱动依赖若设置了错误的scope,会导致测试环境无法正确加载相关类(即使java.sql.SQLException是JDK自带类,驱动类的加载也依赖正确的类路径)。确保POM中的依赖配置如下:

<dependency>
    <groupId>com.amazon.redshift</groupId>
    <artifactId>redshift-jdbc42</artifactId>
    <version>你的驱动版本号</version>
    <!-- 不要设置scope为provided或runtime,保持默认compile,确保测试类能访问 -->
</dependency>

2. 验证连接类与测试类的包引用

  • 确认sample_test类中对DatabaseConnection的导入路径正确:连接类位于src/main/utils,对应的包应为utils,导入语句需为import utils.DatabaseConnection;,避免因包路径错误触发类加载异常。
  • 检查DatabaseConnection类是否正确导入java.sql.SQLException,避免拼写错误(比如写成SQLExeption)导致类加载失败。

3. 统一测试与主程序的JDK版本

java.sql.SQLException从JDK 1.6开始属于标准库,若TestNG测试使用的JDK版本低于主程序(比如主程序用JDK 8,测试用JDK 1.5),会出现找不到类的情况:

  • 在IDE中确认测试模块的JDK配置与主程序一致;
  • 用Maven构建时,在POM中统一配置JDK版本:
<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

4. 清理Maven缓存并重新构建

本地Maven仓库的依赖文件可能损坏,导致测试时类加载异常。执行以下命令清理并重新构建:

mvn clean install -DskipTests

完成后重新运行TestNG测试。

5. 检查TestNG依赖配置

确保TestNG依赖的作用域正确,避免依赖冲突影响类加载:

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>你的TestNG版本号</version>
    <scope>test</scope>
</dependency>

6. 排查连接类的静态代码块

若DatabaseConnection类包含静态代码块,且代码块中直接引用SQLException(比如未正确导入就使用),会在类加载阶段触发异常,导致测试类无法实例化。检查连接类的静态代码逻辑,确保所有JDBC相关类都正确导入。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 07:00:04