SQL Developer 启动报“No Java runtime present”需手动指定JDK 8或11(如jdk-11.0.21),编辑sqldeveloper.conf中SetJavaHome路径并重启;免安装版同理,不读取JAVA_HOME,须用命令行参数-J-Djava.home指定;版本≤22.2仅支持JDK 8/11,≥23.1才支持JDK 17。
SQL Developer 启动报错:“No Java runtime present” 或 “Unable to locate Java home”
这是最常见问题——sql developer 本身不带 jdk,必须手动指定一个兼容的 jdk 路径。它不认 jre,也不支持 jdk 17+(除非用 23.1+ 版本),默认只认 jdk 8 到 jdk 11 的完整安装版。
实操建议:
- 从 Oracle 官网下载
jdk-11.0.21(LTS)或jdk-8u391(最稳),别用 OpenJDK 二进制包里缺javafx的版本(会导致界面白屏) - 安装后记下根目录,比如 macOS 是
/Library/Java/JavaVirtualMachines/jdk-11.0.21.jdk/Contents/Home,Windows 是C:\Program Files\Java\jdk-11.0.21 - 编辑
sqldeveloper.conf(在sqldeveloper/bin/下),取消注释并修改这一行:SetJavaHome /path/to/your/jdk - 改完保存,**必须重启 SQL Developer**,改配置不重启无效
免安装版 SQL Developer 怎么配 JDK(绿色版、解压即用)
免安装版只是没打包安装器,但运行逻辑完全一样——它仍然需要外部 JDK,并且不会自动探测系统 JAVA_HOME。
实操建议:
- 不要依赖系统环境变量
JAVA_HOME,SQL Developer 启动脚本(sqldeveloper.sh或sqldeveloper.exe)默认忽略它 - Windows 下双击启动失败?直接进命令行运行:
sqldeveloper64.exe -J-Djava.home="C:\path\to\jdk" - macOS/Linux 下用终端执行:
./sqldeveloper.sh -J-Djava.home="/path/to/jdk" - 如果加了参数仍报错,大概率是路径含空格或中文——换到纯英文路径,比如
/opt/jdk11
为什么选 JDK 11 而不是 JDK 17 或 JDK 21?
Oracle 官方直到 SQL Developer 23.1 才正式声明支持 JDK 17;旧版(如 21.x、20.x)强行指定 JDK 17+ 会卡在启动界面、控制台抛 UnsupportedClassVersionError 或直接静默退出。
实操建议:
- 查清你手头 SQL Developer 的版本:
Help → About里看 Build number(如21.4.2.199.1829) - 版本 ≤ 22.2 → 只能用
JDK 8或JDK 11 - 版本 ≥ 23.1 → 可试
JDK 17,但仍有部分插件(如某些旧版数据库驱动)不兼容 - 别为了“新”去折腾 JDK 21:目前无任何稳定收益,反而增加
NoClassDefFoundError风险
启动后连接报错:“Missing IN or OUT parameter at index:: 1” 不是 JDK 问题
这个错误常被误判为环境配置失败,其实和 JDK 完全无关,是 SQL Developer 在解析 PL/SQL 块时对绑定变量语法更严格了(尤其用 EXEC 或匿名块时)。
实操建议:
- 检查语句里有没有漏写
:,比如WHERE id = :id写成WHERE id = id - 避免在
SQL Worksheet里直接跑带DECLARE的 PL/SQL 块——改用Tools → Database Tools → Run PL/SQL - 如果用了
bind variable,确认变量名拼写和大小写一致(SQL Developer 区分大小写) - 这类报错不会出现在命令行
sqlplus里,说明是 IDE 解析层的问题,不是数据库或 JDK 层










