我试图在Java环境中使用nashorn.运行以下代码
load("fx:base.js");
load("fx:controls.js");
load("fx:graphics.js");
var material = new PhongMaterial();
material.diffuseColor = Color.LIGHTGREEN;
material.specularColor = Color.rgb(30, 30, 30);
var meshView = Java.to([
new Box(200, 200, 200),
JDK 8
反应0.13.1
在使用Nashorn呈现ReactJS组件时获得以下错误
Error: Invariant Violation: renderToString(): You must pass a valid ReactElement.
component.js
var Controller = React.createClass({
render: function() {
return (React.createElement("div",null,"Hello, World!"));
}
});
var re
我想检索在JS中生成的对象,将它们存储在Java中,然后调用它们上的方法。这适用于Java 7,现在对于Java 8,我得到了一个例外:
Exception in thread "main" java.lang.IllegalArgumentException: no current Global instance for nashorn
at jdk.nashorn.api.scripting.NashornScriptEngine.invokeImpl(NashornScriptEngine.java:492)
at jdk.nashorn.api.scri
假设以下API:
package nashorn.test;
public class API {
public static void test(String string) {
throw new RuntimeException("Don't call this");
}
public static void test(Integer... args) {
System.out.println("OK");
}
}
下面的Nashorn JavaScript片段将失败:
var
我的要求是解析javascript文件并获得json格式的AST(抽象语法树)。esprima.parseScript()函数接受js代码并正确地生成AST。但是,如何使用esprima从不同的js文件中读取js代码并对其进行解析?我需要能够从Java类调用js函数。
我尝试用Java读取我想要解析的js,并将其作为输入传递给函数。但是,下面的代码给出了一个异常。
parser.js:
load('esprima.js');
function parsejs(jscode){
var op = esprima.parseScript(jscode)
我想在我的Nashorn javascript中加载一个第三方类,它作为一个可激发的shell脚本运行,我检查下面的线程,但是没有得到提示。
如何访问Nashorn 中javascript中的类方法
这是我的剧本
#!/usr/java/default/bin/jjs -scripting
var db_url = "jdbc:sqlserver://1.2.3.4:1433;databaseName=email;user=email;password=email;";
var user = "email";
var pass = "email"
如果有的话,我能做些什么来阻止纳什霍恩一直扔ArrayIndexOutOfBoundsException呢?
这个看似琐碎而正确的代码片段(这里没有错误)导致Nashorn出现异常:
文件test.js:
var test;
(function (test) {
(function (renderer) {
var posts = {
0: null,
1: null,
2: null,
3: null // comment out this line --> n
当我尝试加载Rhino (load("nashorn:mozilla_compat.js"))的Nashorn兼容性文件时,出现以下错误:
java.lang.RuntimeException: javax.script.ScriptException: ReferenceError: "net" is not defined in nashorn:mozilla_compat.js at line number 67
我想尽一切办法让它工作,但没有任何帮助:
我正在使用Intellij,我希望在一个由Nashorn Java8评估的javascript中实现websocket。我的javascript文件顶部有以下一行:
var socket = new WebSocket("http://localhost:12345/echo");
但它却给了我这个错误:
Caused by: javax.script.ScriptException: ReferenceError: "WebSocket" is not defined in src/sample/hello.js at line number 8
at
我正在迁移到JDK 8,不得不使用Nashorn来处理JS文件。
我曾经能够使用JDK7Rhino JS engine处理一个具有1个巨大函数的300MB文件。应该注意的是,300MB是由我的工具处理的一个生成的文件,我知道在一个巨大的文件中拥有一个巨大的函数并不是一个好的做法。
现在我不能,我正在获取java.lang.runtimeException: Class file too large!,使用以下堆栈跟踪:
at jdk.nashorn.internal.codegen.CompilationPhase$BytecodeGenerationPhase.transform(Com
我有一个程序(用Clojure编写),它向JS函数中注入一些JS代码,然后通过Nashorn对其进行评估。我无法控制代码传递(它可能包含引号、简单引号.)。
看起来是这样的:
;; Clojure
(eval-str (str "print(evaluateCode(\"" s " \"))"))
// equivalent code in pseudo-js just for those not reading Clojure fluently
evalJS("println(evaluateCode(" + arbitra