我有一个Java7程序,它加载了数千个对象(组件),每个对象都有很多参数(存储在Map中),并在这些对象上执行各种Rhino脚本以计算其他派生参数,这些参数被存储回对象的Map.在运行每个脚本之前,一个Scope对象被创建,由对象的映射支持,在脚本运行期间用作JavaScript的范围。作为一个简单的例子,下面创建了一个HashMapa=10和b=20,并执行脚本c=a+b,结果为c=30.0存储回map中。虽然脚本看起来像是在创建一个全局变量c,Scope对象捕获它并将其存储在map中;使用不同的Scope执行的另一个脚本对象不会看到这个变量:publicclassRhino{pub
我们从OracleJDK8u77升级到8u92,突然之间以前可以工作的脚本不再工作了。一个最小的复制器是:Mapattributes=Collections.singletonMap("GROSSREIMBAMOUNT",BigDecimal.ZERO);Stringscript="GROSSREIMBAMOUNT.toFixed(2)";ScriptEngineManagermgr=newScriptEngineManager();ScriptEnginejsEngine=mgr.getEngineByName("JavaScript");for(Entryentry:attribu
我有以下程序,它在Java(nashorn)中执行Javascript。Javascript代码正在返回一个对象。publicObjectexecute(){ScriptEngineManagersem=newScriptEngineManager();ScriptEnginee=sem.getEngineByName("nashorn");Invocableinvocable=(Invocable)e;ScriptEngineFactoryf=e.getFactory();Objectresult;try{Stringstatement="functionfetch(value,co
在下面的代码中,我在与主线程不同的线程中运行javascript。该脚本是一个无限循环,因此需要以某种方式终止它。怎么办?在脚本开始运行后调用.cancel()无效。但是,如果我在线程初始化之后立即调用.cancel(),它将终止它(注释掉的行)。packagetestscriptterminate;importjavax.script.ScriptEngine;importjavax.script.ScriptEngineManager;importjavax.script.ScriptException;importjava.util.concurrent.ExecutorServ
我使用Java8并使用默认的JavaScript引擎(Nashorn)。我想看看它与“大肆宣传”的GRAALJS相比如何。参见:https://github.com/graalvm/graaljshttps://www.graalvm.org/特别是因为我听说他们想弃用nashorn:http://openjdk.java.net/jeps/335有人知道如何(轻松)访问graaljs吗?我希望找到pom.xml或下载jar文件的地方但不是运气 最佳答案 目前在GraalVM之外没有可用的预构建Graal.jsjar。要在其他JDK
我想使用Nashorn控制台来替代Railsc。例如,我想调用Java方法从远程系统导入数据并执行数据迁移。我发现这很有趣:https://www.baeldung.com/java-nashorn$JAVA_HOME/bin/jjsjjs>print("test");testjjs>例如,我如何从部署在Wildfly服务器上的WAR包调用一些Java方法并传递一些参数?您能提出更好的替代方案吗? 最佳答案 引用Oracle的“JavaScriptingProgrammer'sGuide”第3章,“UsingJavaFromScri
我遇到了以下问题。我想在Nashorn脚本中使用java.util.HashMap和java.util.PriorityQueue,我需要在其中使用特定的自定义对象作为HashMap中的键,并使用HashMap.containsKey()检查Map中是否有键(另一种选择是检查对象是否在Collection.contains(Objecto)).因此,显然,我需要根据某些字段值在我的对象中实现equals和hashCode。例如:尝试使用JavaScript。不起作用,因为JavaScript没有这些方法。请参阅示例1和示例2扩展java.lang.Object。示例3。部分工作,正在调
用这样的导入编写Java程序对我来说安全吗:importjdk.nashorn.api.scripting.NashornScriptEngineFactory;importjdk.nashorn.api.scripting.ClassFilter;注意:在我的示例中,我导入了Nashorn,但它可以是任何其他jdk包。注意:我知道从java.*、javax.*导入是安全/正确的,从sun.*导入是不安全/不支持的。我在这里看到一篇好文章:http://www.oracle.com/technetwork/java/faq-sun-packages-142232.html我在Java官
在Java8和Nashorn的上下文中,我经常看到两个项目被提及。Avatar.js和ProjectAvatar这些项目是什么关系?Avatar.js的文档非常少。据我所知,它提供了在JVM上执行节点应用程序的可能性。Avatar项目似乎建立在Avatar.js之上。然而,范围似乎是为JavaEE7提供替代Web框架。是否也可以使用ProjectAvatar执行节点程序(如grunt)? 最佳答案 更新:ProjectAvatar为officiallyhalted2015-02-12.Avatar.js是非正式称为“node.jar
我们目前正在为我们的产品之一添加服务器端脚本功能。作为其中的一部分,我正在评估JSR223脚本引擎。由于我们可能会在服务器上运行大量脚本,因此我特别关注这些脚本引擎的内存使用情况。将Rhino(AppleJDK1.6.0_65-b14-462-11M4609、MacOSX10.9.2)与Nashorn(OracleJDK1.8.0-b132)进行比较,每个ScriptEngine实例的内存使用情况似乎存在显着差异。为了对此进行测试,我使用了一个简单的程序来启动10个空白的ScriptEngine实例,然后阻止从标准输入读取数据。然后我使用jmap进行堆转储(jmap-dump:form