当前位置: 首页 > 知识库问答 >
问题:

Nashorn depracated的建议[副本]

越健
2023-03-14

我使用一个库来计算一个布尔表达式作为一个字符串。在Java11中,我得到以下警告:

jdk中的NashornScriptEngineFactory。纳肖恩。应用程序编程接口。脚本已被弃用并标记为删除

不过,我对此有点不清楚。我正在使用下面的代码,我没有看到Nashorn在这段代码中被引用,但是警告仍然存在。

ScriptEngineManager工厂=新的ScriptEngineManager();ScriptEngine=工厂。getEngineByName(“JavaScript”);布尔值=(布尔)引擎。eval(规则字符串)

我的问题是这个警告仍然适用于这段代码吗?另外,如果有的话,还有其他我可以使用的选择吗?

提前感谢您的帮助。


共有2个答案

羊舌光赫
2023-03-14

对于简单表达式,可以使用Spring表达式语言(SpEL):

https://www.baeldung.com/spring-expression-language

        val car = Car("Honda", "Jazz", year = 2020)
        val context: EvaluationContext = StandardEvaluationContext(car)
        val expression = expressionParser.parseExpression("year - 2000")
        val result = expression.getValue(context) // = 20
景才英
2023-03-14

Nashorn是Java8的默认Javascript引擎。所以这样做:

ScriptEngine engine = factory.getEngineByName("JavaScript")

启动nashorn javascript引擎。

所以是的,事实上nashorn被弃用(由这个JEP)确实会影响这个代码,但是oracle将支持java 11到2026年9月(这里描述),所以至少在那之前你对java 11有很好的补丁等。

此外,弃用意味着“标记为在未来某个时候移除”,而不是实际上从JDK移除,因此它也可能潜入下一个LTS JDK。

要在JVM上继续使用javascript,选项如下:

  • 回到Rhino(速度慢,不太吸引人-它不使用较新的字节码指令,如invokedynamic
  • 迁移到GraalVM-graaljs。当您使用现代ECMAscript(2019)时,这可能是最好的选择,它意味着可以准备好生产并为许多目标平台构建本机二进制文件
 类似资料:
  • 这是我目前的DB结构,我有一个集合存储所有调查问题文档,在每个问题doc下,它有一个Answers子集合,存储所有回答问题的用户。具有挑战性的部分是,我如何随机加载8个未被特定用户回答的问题,而无需查询整个问题集合?什么是成本最低的方法?任何建议都很有帮助。谢谢 以下是我的Db结构:

  • 问题内容: 我有一个Elasticsearch索引,其中有一些数据。我实现了该功能,所以当用户写错拼写的东西时,它可能会收到带有正确单词的建议。 之所以使用短语建议者,是因为我需要一些简短的短语(例如名称)的建议,问题是索引中不存在某些建议。 例: 我的问题是,索引中没有与指定建议匹配的词组,因此它向我推荐了不存在的词组,因此会给我一个未找到的搜索词。 我该怎么办?短语建议者是否应该为索引中实际存

  • 问题内容: 我正在阅读一些hibernate教程,并陷入default_batch_fetch_size的问题。阅读有关“可以在性能敏感的应用程序中使用Hibernate吗?”的专家评论清楚地解释了其重要性,但是我试图理解为什么在链接中使用推荐值4、8、16或32。 问候 问题答案: 我们正在生产中使用。因此,在某些情况下,我们有3个查询而不是300个查询,因此对于我们的数据库来说是一个很好的性能

  • 问题内容: 我正在做一个需要成熟的爬虫来做一些工作的项目,为此我正在评估Nutch。我当前的需求相对简单:我需要一个能够将数据保存到磁盘的搜寻器,并且我需要它能够仅重新爬取站点的更新资源并跳过已经爬取的部分。有没有人有直接在Java中而不是通过命令行使用Nutch代码的经验。我想从简单开始:创建一个爬虫(或类似的爬虫),对其进行最低限度的配置并启动,没有什么幻想。是否有一些示例,或者我应该看一些资

  • 在我的Android Studio上,它说它“无法解析R符号”所以我试着重建它并清理它几次,但它仍然是这样的。 我该怎么办? 这是我的代码-第一个url显示我的代码 我的毕业生说这两件事是问题所在,但我不理解。我的毕业生说: