【问题标题】:Java scripting NoSuchMethodException?Java脚本NoSuchMethodException?
【发布时间】:2012-05-05 17:41:15
【问题描述】:

我正在努力让 (JavaScript) 脚本在 Java 中工作。

我有一个 JavaScript 程序,在我的 Java 程序中定义(以及所有必要的脚本引擎相关事物的实例),如下所示:

static ScriptEngineManager engineManager = new ScriptEngineManager();
static ScriptEngine jsengine = engineManager.getEngineByName("js");
static Invocable jsinvoke = (Invocable) jsengine;


static String program =

    "//importPackage(javax.swing);" +
    "function myMethod(x, y) {" +
        "return x+y;" +
    "}";

在程序开始时,我确实调用了这个,它毫无怨言地工作:

    try {
        jsengine.eval(program);
    } catch(ScriptException e) {e.printStackTrace();}

然后,我打电话给myMethod

    try {
        jsinvoke.invokeFunction("myMethod", x, y);
    } catch(ScriptException se) {
        se.printStackTrace();
    }
    catch(NoSuchMethodException nsme) {
        nsme.printStackTrace();
    }

它给出了错误java.lang.NoSuchMethodException: no such method: myMethod。它明明存在于 JavaScript 中,那我做错了什么?

【问题讨论】:

    标签: java javascript rhino javascript-engine nosuchmethod


    【解决方案1】:

    注释的代码似乎是问题的根源,因为它甚至连方法名 myMethod 都弄不出来了

    //importPackage(javax.swing);
    

    删除此行并重新运行您的代码

    如果您想保留您的注释,那么请使用多行注释 (/**/) 而不是单行注释 (//)

    【讨论】:

    • 或者他可以在 Java 中注释掉整行而不是在他的 Javascript 字符串中。相同的效果,减去错误。
    • 是的,我不敢相信我错过了。顺便问一下,是否可以将自定义库导入 Rhino?因为它似乎没有找到我安装的库 JAR,我知道它们正在工作,因为我可以用 Java import 它们就好了。 (或者我应该提出另一个问题?:P)
    • 没关系:stackoverflow.com/questions/4090155/… 完美运行。
    猜你喜欢
    • 2011-04-05
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多