Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法运行在JAVA中使用CryptoJS库的javascript_Javascript_Java_Cryptojs_Scriptengine - Fatal编程技术网

无法运行在JAVA中使用CryptoJS库的javascript

无法运行在JAVA中使用CryptoJS库的javascript,javascript,java,cryptojs,scriptengine,Javascript,Java,Cryptojs,Scriptengine,我试图在Java代码中运行JS函数,但JS函数没有执行,因为它有一些需要加载的第三方库 JsFunction.js load('crypto-js-3.1.9/crypto-js.js'); var encrypterId = function(name) { var context_data = {"referralId": name}; var secret = CryptoJS.enc.Utf8.parse(JSON.stringify(conte

我试图在Java代码中运行JS函数,但JS函数没有执行,因为它有一些需要加载的第三方库

JsFunction.js

load('crypto-js-3.1.9/crypto-js.js');

var encrypterId = function(name) {

    var context_data = {"referralId": name};

    var secret = CryptoJS.enc.Utf8.parse(JSON.stringify(context_data))

    var encoded_referral_id = CryptoJS.enc.Base64.stringify(secret);

    return encoded_referral_id;
}
JavaCode:

public static void runDisplay() {
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
        try {
            engine.eval(new FileReader("./resources/JsFunction.js"));
            Invocable invocable = (Invocable) engine;
            Object result;
            result = invocable.invokeFunction("encrypterId", "827AE1001sdsj213jasu721kkao@1sa");
            System.out.println(result);
        } catch (FileNotFoundException | NoSuchMethodException | ScriptException e) {
            e.printStackTrace();
        }
    }
javax.script.ScriptException: TypeError: Cannot load script from crypto-js-3.1.9/crypto-js.js in <eval> at line number 1
    at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:469)
    at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:453)
    at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:405)
    at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:401)
    at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:149)
例外情况:

public static void runDisplay() {
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
        try {
            engine.eval(new FileReader("./resources/JsFunction.js"));
            Invocable invocable = (Invocable) engine;
            Object result;
            result = invocable.invokeFunction("encrypterId", "827AE1001sdsj213jasu721kkao@1sa");
            System.out.println(result);
        } catch (FileNotFoundException | NoSuchMethodException | ScriptException e) {
            e.printStackTrace();
        }
    }
javax.script.ScriptException: TypeError: Cannot load script from crypto-js-3.1.9/crypto-js.js in <eval> at line number 1
    at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:469)
    at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:453)
    at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:405)
    at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:401)
    at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:149)
javax.script.ScriptException:TypeError:无法从第1行的crypto-js-3.1.9/crypto-js.js加载脚本
位于jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:469)
位于jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:453)
位于jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:405)
位于jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:401)
位于jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:149)

有人能帮我运行这个JS并返回值吗?还可以用Java编写等效的代码吗?

我认为您可以这样做:

从JsFunction.js中删除“load”行

在Java代码中,
engine.eval(newfilereader(“./resources/JsFunction.js”))前面的一行
只需插入一行
engine.eval(新文件阅读器(“./resources/crypto-js-3.1.9/crypto-js.js”)

我相信这会将crypto-js.js文件的内容放入ScriptEngine的作用域中,随后的JsFunction.js调用应该可以工作


我用更简单的JS文件做了类似的测试。我想你可以这样做:

从JsFunction.js中删除“load”行

在Java代码中,
engine.eval(newfilereader(“./resources/JsFunction.js”))前面的一行
只需插入一行
engine.eval(新文件阅读器(“./resources/crypto-js-3.1.9/crypto-js.js”)

我相信这会将crypto-js.js文件的内容放入ScriptEngine的作用域中,随后的JsFunction.js调用应该可以工作

我用更简单的JS文件做了类似的测试用例