Java初学者运行他人GWT应用遇本地MySQL JDBC连接失败问题
嘿,作为Java初学者碰到这种环境配置问题太正常了,我来帮你一步步捋清楚!先把你遇到的两个现象拆开,优先解决核心的数据库连接问题,再顺带处理那个注册表警告。
一、核心问题:JDBC数据库连接失败
既然原代码本身是可用的,那问题基本出在你的本地环境配置上,按下面的步骤排查:
检查JDBC驱动是否正确加载
GWT的服务器端代码必须依赖JDBC驱动才能和数据库通信,你得确认驱动jar包已经在项目的类路径里:- 如果用Maven管理项目,打开
pom.xml,看看对应数据库的驱动依赖(比如MySQL的mysql-connector-java)是否存在,而且scope不能设为provided,要改成runtime或者compile,确保开发服务器能获取到这个驱动。 - 如果是手动添加jar包,一定要把驱动jar放到项目的
WEB-INF/lib目录下,这样gwt:run启动的开发服务器才能加载到它。
- 如果用Maven管理项目,打开
核对数据库连接参数
找到项目里的数据库配置文件(比如db.properties)或者代码里的硬编码参数,仔细检查这几点:- 数据库URL格式是否正确(比如MySQL是
jdbc:mysql://localhost:3306/你的数据库名?useSSL=false,PostgreSQL是jdbc:postgresql://localhost:5432/你的数据库名) - 用户名和密码是否和你本地数据库的账号匹配
- 本地数据库服务是否已经启动,端口有没有被占用,防火墙有没有拦截数据库端口(比如3306、5432这些常用端口)
- 数据库URL格式是否正确(比如MySQL是
确认数据库用户权限
有时候本地数据库的用户可能没有权限从localhost连接,或者没有访问目标数据库的权限。你可以先用数据库客户端(比如Navicat、MySQL Workbench)试试用同样的账号密码连接,如果连不上,那就是数据库权限的问题,需要给用户分配对应的访问权限。
二、顺带解决Windows注册表警告
你看到的这个警告:
[ERROR] kwi 21, 2018 3:54:08 AM java.util.prefs.WindowsPreferences
[ERROR] WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
这是Java试图在Windows注册表创建偏好设置节点时没有管理员权限导致的,通常不会影响数据库连接,但如果看着不舒服,可以这么解决:
- 用管理员权限启动你的IDE或者命令行,再运行
gwt:run命令 - 或者手动打开注册表编辑器(
regedit),找到HKEY_LOCAL_MACHINE\Software,右键新建项JavaSoft,再在JavaSoft下新建Prefs项,给当前用户分配读写权限。
内容的提问来源于stack exchange,提问作者mck

