java - SQLcl 找不到 js 引擎来处理 js 脚本
问题描述
当我想运行用 js 编写的脚本时,我收到一条关于我的类路径中缺少 js 引擎的消息:
SQL> script
2 ctx.write('hi');
3* /
js language engine not found
Please add js language engine to the classpath
SQL>
这是我的 Java 参数:
PS C:\run_scripts_sqlcl> sql /nolog
Picked up JAVA_TOOL_OPTIONS: -Duser.language=en
SQLcl: Release 21.3 Production on Tue Nov 02 17:54:24 2021
Copyright (c) 1982, 2021, Oracle. All rights reserved.
SQL> show java
Java Detail
-----------
java.home= C:\Program Files\Java\jre1.8.0_291
java.vendor= Oracle Corporation
java.vendor.url= http://java.oracle.com/
java.version= 1.8.0_291
--------------------------------------------------------------------------------
os.arch= amd64
os.name= Windows 10
os.version= 10.0
path.separator= ;
file.separator= \
line.separator=
user.dir= C:\run_scripts_sqlcl
user.home= C:\Users\user
user.name= user
user.language= en
user.region= null
file.encoding= Cp1251
Used memory: 78.1MB
Max available memory: 1,820.5MB
--------------------------------------------------------------------------------
SQL_HOME=null
Classpath
--------------------------------------------------------------------------------
null
但是当我jjs
从 Java/bin 目录直接调用时,它工作正常:
PS C:\Program Files\Java\jre1.8.0_291\bin> .\jjs.exe
Picked up JAVA_TOOL_OPTIONS: -Duser.language=en
jjs> print('hi!')
hi!
jjs>
如何将 js 引擎添加到我的类路径?我应该设置一些特定的参数吗?
解决方案
您有一个 JRE,Java 运行时引擎不包括用于处理您的脚本的 Nashorn 引擎,例如 JavaScript。
您的选择:
- 获取一个 JDK(确保它是 8 或 11,因为 Nashorn 在 LTS 帖子 11 中被删除)
- 使用 GraalVM 运行 SQLcl
在即将发布的版本中,我们将检测到缺少此内容,并在您尝试运行脚本时为您提供。
推荐阅读
- pandas - 为什么 pandas.DataFrame.to_csv 在列中写一个额外的 \n 并用数组拆分行?
- reactive-programming - 如何从 Mono SpringWebFlux 返回一个对象
- shell - 在 Docker 容器启动时执行 .sh 文件并让容器运行
- javascript - this.props 不是 componentDidUpdate() 中的函数
- javascript - 反应useEffect触发器虽然依赖值保持不变?
- java - 这个do/while循环无缘无故重复,如何解决?
- jenkins - 远程配置 Jenkins 属性以允许访问机器人日志
- python - 脚本不会切换到另一个用户
- tensorflow - 使用 LSTM “检查输入时出错:预期 lstm_22_input 具有 3 个维度,但得到的数组具有形状 (15, 33297)”
- python - 我有一个大的中文文本文件,我想将其重新格式化为单独的行,每行以句点结尾