已安装Oracle JDK 8时SQLcl 21.3运行JS脚本找不到引擎问题求助
问题原因
SQLcl 21.3运行JS脚本依赖Java的Nashorn JavaScript引擎,Oracle JDK 8默认内置该引擎,但你之前将CLASSPATH设置为%JDK_HOME%/bin属于无效配置(bin目录存放可执行文件,非类库路径),首先需要先删除该错误的环境变量配置。
可行解决方法
方案1(优先尝试,操作最简单)
启动SQLcl时添加Java参数强制加载内置JS引擎,PowerShell中执行的启动命令调整为:
$env:JAVA_TOOL_OPTIONS="-Duser.language=en -Djavax.script.engine.name=javascript" sql /nolog启动后再次执行
script相关命令即可正常识别JS引擎。方案2(手动补全依赖)
若方案1无效,说明你当前的JDK8版本缺失Nashorn组件,手动补全依赖即可:
- 下载
nashorn-core、asm两个必要的jar包,放入SQLcl安装目录下的lib文件夹中 - 重启SQLcl即可正常运行JS脚本
- 下载
方案3(更换适配的Java版本)
不想手动配置依赖的话,直接将运行SQLcl的Java版本更换为11~14区间的Oracle JDK/OpenJDK即可,这几个版本默认内置完整的Nashorn引擎,SQLcl 21.3可直接识别无需额外配置。
注意:不要使用JDK15及以上版本,这类版本已经正式移除了内置Nashorn引擎,反而会触发找不到JS引擎的报错
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

