【发布时间】:2012-07-29 04:09:41
【问题描述】:
我正在尝试从 java 类调用 javascript 函数,但出现以下错误:
-Could not find method sun.misc.Service.installedProviders, referenced from method javax.script.ScriptEngineManager.initEngines
-Could not find method sun.misc.Service.providers, referenced from method javax.script.ScriptEngineManager.initEngines
-Could not find method sun.misc.Service.installedProviders, referenced from method javax.script.ScriptEngineManager.initEngines
-java.lang.VerifyError: javax.script.ScriptEngineManager
代码如下:
public void sendResult(){
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
String script = "function send() {"+"var id_result = window.MyPGP.getResult();"+
"document.getElementById('id_result').value = id_result;"+"console.log(\"change the box value\");";
try {
engine.eval(script);
Invocable invocableEngine = (Invocable) engine;
invocableEngine.invokeFunction("send");
} catch (ScriptException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
我真正想做的是,当支付完成时,在这个类的其他方法中调用这个函数来获取支付结果,并打印在主html的一个框中。
【问题讨论】:
-
这和安卓有什么关系?
-
是一个基于android的phonegap应用。
-
@AndersMetnik 实际上它与android有关。因为我们必须根据平台以不同的方式编写代码。
-
@luperxe 您想调用
.html文件中的java 脚本函数吗?你想在后台运行那个函数吗? -
@Coder_sLaY 我要调用的javascript函数写在我发布的代码中。 String script = "function send() {"+"var id_result = window.MyPGP.getResult();"+"document.getElementById('id_result').value = id_result;"+"console.log(\"更改框值\");";是的,我想在后台运行它。
标签: java javascript android cordova