配置JDBC驱动CLASSPATH后无法找到或加载Java主类如何解决
故障原因
你手动配置全局CLASSPATH时未包含当前工作目录(.),JVM查找类时只会遍历你指定的MySQL驱动jar包路径,找不到当前目录下编译生成的.class文件,因此所有本地Java程序都会触发类加载失败报错。
修复方案
- 修改
/etc/environment中的CLASSPATH配置,补充当前目录标识,修改后内容为:
CLASSPATH=".:/usr/share/java/mysql-connector-java-8.0.25.jar"
路径开头的.代表当前工作目录,Linux下多个类路径用冒号分隔即可。
- 保存文件后注销并重新登录使全局配置生效,也可执行
source /etc/environment让配置在当前终端临时生效验证效果。 - 重新进入Java代码目录执行编译运行命令即可恢复正常:
javac MysqlTest.java java MysqlTest
CLASSPATH配置建议
不建议直接修改全局CLASSPATH,该配置会影响系统所有用户的所有Java程序运行,容易出现意料之外的兼容问题。如果只需要在特定项目中使用JDBC驱动,优先选择以下两种方案:
- 运行程序时临时指定类路径:编译无需额外参数,运行时执行如下命令即可,仅对当前运行的程序生效,不会影响全局配置:
java -cp .:/usr/share/java/mysql-connector-java-8.0.25.jar MysqlTest
- 使用Maven/Gradle等项目构建工具管理依赖,将JDBC驱动声明为项目依赖,无需手动配置任何环境变量,是Java开发的标准实践。
内容的提问来源于stack exchange,提问作者Gustavo Palomino
相关产品推荐
相关产品推荐

