草庐IT

javascript - 如何调用 Nashorn CompiledScript 中的方法?

我有以下有效的代码:ScriptEnginejsEngine=ScriptEngineManager.new().getEngineByName("nashorn");jsEngine.eval("somescript");jsEngine.invokeMethod(jsEngine.eval("foo"),"bar");但我想使用预编译的脚本,这样我就不必在每次需要运行时都评估脚本,所以我正在尝试;ScriptEnginejsEngine=ScriptEngineManager.new().getEngineByName("nashorn");CompiledScriptcompil

java - 使用 JVM Nashorn (Play Framework) 呈现 React.js 时出错。我得到 "null is not a function"

我一直在阅读本教程:http://tylermcginnis.com/reactjs-tutorial-a-comprehensive-guide-to-building-apps-with-react/,并在使用Nashorn在JVM上渲染React时遇到问题。我的App.js文件如下。在客户端上运行时它可以正常工作。只是在使用Nashorn/JVM时报错:varApp=React.createClass({getInitialState:function(){return{name:'TylerMcGinnis',friends:['JakeLingwall','MurphyRan

Java代码编译成常量池中的MethodHandle

我正在尝试使用Java8Nashorn具有完整的源代码(未检测)。如您所知,它使用Nasgen修改.classes,输出在JRE/lib/ext/nashorn.jar中。在反汇编输出时,使用javap:0:aload_01:ldc#24//StringFunction3:ldc#31//MethodHandleinvokestaticjdk/nashorn/internal/objects/NativeFunction.function:(ZLjava/lang/Object;[Ljava/lang/Object;)Ljdk/nashorn/internal/runtime/Scri

java - readFully 未使用 Java Nashorn Javascript 引擎定义

我正在尝试使用新的Java8Nashornjavascript引擎运行javascript脚本,但它失败并出现以下错误::1ReferenceError:"readFully"isnotdefined脚本使用应该在全局范围内定义的readFully函数nashorn在启用脚本模式的情况下运行(这是通过ScriptEngine运行时的默认设置,如此处所示http://mail.openjdk.java.net/pipermail/nashorn-dev/2013-December/002562.html)。这是重现错误的示例:importjava.io.FileNotFoundExcep

java - JDK 8 上的 Nashorn 解析器 API

寻找用于解析JavaScript的Java/JDKAPI(包括Nashorn扩展)我偶然发现了thisGist,根据内联评论,它需要JDK9才能运行。是否有一种可靠的方法可以在当前或计划发布的JDK8上完成相同的任务? 最佳答案 Nashorn解析器API(http://openjdk.java.net/jeps/236)是jdk9特定的API。在jdk8或jdk8更新中,支持脚本解析器功能。load("nashorn:parser.js");并从脚本中调用“parse”函数。此函数返回一个JSON对象,表示已解析脚本的AST。查看

Java nashorn 比较一个 java 对象是否属于某种 java 类型

我正在使用instanceof,但它目前无法正常工作。我有一个从脚本中的Java代码中检索到的变量。我们将此变量称为myObject,如您所料,它是MyObject类的实例。if(myObjectinstanceofJava.type("MyObject")){//Thecheckdoesn'tpass;thecodeheredoesn'texecute}我只能在网上找到关于这个的模糊信息。检查myObject是否是MyObject类的实例的明确方法是什么,就像我在Java中很容易做的那样?谢谢! 最佳答案 您所拥有的应该可以工作,

java - 是否可以让 Nashorn 从类路径加载脚本?

是否可以让Nashorn的load方法在解析URI时使用项目的类路径?这是我正在尝试做的事情:(defncreate-engine"Createsanewnashornscriptengineandloadsdependenciesintoitscontext."[dependencies](let[nashorn(.getEngineByName(ScriptEngineManager.)"nashorn")scripts(map#(str"load('"%"');")dependencies)](.evalnashorn"varglobal=this;")(doseq[script

javascript - 在 Nashorn 中的特定上下文中执行函数

我有一个自定义的Nashorn运行时,我设置了一些全局函数和对象——其中一些是无状态的,一些是有状态的。针对此运行时,我正在运行一些自定义脚本。对于每次执行,我计划创建一个由全局上下文支持的新上下文:myContext.setBindings(engine.createBindings(),ScriptContext.ENGINE_SCOPE);engine.eval(myScript,myContext);根据我阅读的内容,对全局范围的任何修改(从脚本的Angular来看)都将限于我创建的新上下文。这些脚本在评估时会公开一些对象(具有明确定义的名称和方法名称)。我可以通过将engin

java - 在 Nashorn 中区分 null 和 undefined 值

我正在运行这段代码ScriptEngineengine=newScriptEngineManager().getEngineByName("nashorn");engine.eval("varout;");engine.eval("varout1=null;");Objectm=engine.get("out");Objectm1=engine.get("out1");并得到m==null和m1==null。如何判断value是undefined还是null? 最佳答案 实际上,了解脚本返回的对象是否为undefined的正确方法是

javascript - === 当两个引用应该指向同一个对象时,在 Nashorn 中返回 false

这是一个演示我面临的问题的例子:ScriptEngineengine=newNashornScriptEngineFactory().getScriptEngine(newString[]{"-strict"});try{engine.eval("functionFoo(src){this.src=src};vare={x:newFoo(\"what\")};");ScriptContextc=newSimpleScriptContext();c.setBindings(engine.createBindings(),ScriptContext.ENGINE_SCOPE);c.getB