java命令执行class文件时报错:No suitable driver found for jdbc

背景:在ide中直接运行测试类的时候不会报错,但是使用java命令直接运行该测试类对应的class文件时,提示:java.sql.SQLException: No suitable driver found for jdbc:mysql:

这里我就特疑惑,这是为什么?上网百度一番尝试了很多方法都不行,以下总结了我尝试过的方法:

我的jdbc驱动包:mysql-connector-java-8.0.16.jar

1、将jdbc的驱动包放到jre的lib\ext下,然后再执行 java com.Test,依旧报错:java.sql.SQLException: No suitable driver found for jdbc:mysql:

2、将jdbc的驱动包配置到CLASSPATH环境变量中,然后再执行 java com.Test,依旧报错:java.sql.SQLException: No suitable driver found for jdbc:mysql:

3、将jdbc单独拎出来放到一个文件夹(D:\test)下,然后执行命令 java -classpath D:\mysql-connector-java-8.0.16.jar;./ com.Test

就不再报上面的错误了,提示我另一个文件找不到。那有了前面的灵感后,遇到后面这个问题的时候,我就很自然的将需要的这个jar放到jdbc驱动包的同一路径下;

然后执行 java -classpath D:\test\poi-3.9.jar;D:\test\mysql-connector-java-8.0.16.jar;./ com.Test 就成功了

 

我这里依赖的jar比较少,通过上面的方式勉强看得过去,那当项目依赖jar包很多的情况下,这种方式显然不太友好;这个时候可以自己写一个.sh脚本,自动加载某路径下的jar包皆可以了,

示例如下(ubuntu上使用的脚本):

#Java程序所在的目录(classes的上一级目录)
APP_HOME=/home/testProject
 
#需要启动的Java主程序(main方法类)
APP_MAINCLASS=com/Test
 
echo $APP_MAINCLASS
#拼凑完整的classpath参数,包括指定lib目录下所有的jar
CLASSPATH=$APP_HOME
for i in "$APP_HOME"/lib/*.jar; do
   CLASSPATH="$CLASSPATH":"$i"
done

echo $CLASSPATH

java -classpath $CLASSPATH $APP_MAINCLASS

 

你可能感兴趣的:(Java)