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
相关产品推荐
相关产品推荐

