java有一个脚本管理器,允许java调用javascript,如下所示:
import javax.script.*;
public class ExecuteScript {
public static void main(String[] args) throws Exception {
// create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();
// create a JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");
// evaluate JavaScript code from String
engine.eval("print('Welocme to java world')");
}
public static void sayHi(){
System.out.println("hihi");
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我有一个sayHi()函数,我可以使用javascript,通过脚本引擎来调用Java函数吗?谢谢.
以下代码段
package org.test.script;
import javax.script.*;
public class ExecuteScript {
public static void main(String[] args) throws Exception {
// create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();
// create a JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");
// evaluate JavaScript code from String
engine.eval("" +
"importPackage(org.test.script);\n" +
"print('Welocme to java world\\n');\n" +
"ExecuteScript.sayHi();");
}
public static void sayHi() {
System.out.println("hihi");
}
}
Run Code Online (Sandbox Code Playgroud)
输出
Welocme to java world
hihi
Run Code Online (Sandbox Code Playgroud)
从JavaDocs快速入侵.
import javax.script.*;
public class ExecuteScript {
public static void main(String[] args) throws Exception {
// create a Java object
ExecuteScript es = new ExecuteScript();
// create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();
// create a JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");
// evaluate JavaScript code from String
engine.eval("println('Welcome to Java world')");
// add the Java object into the engine.
engine.put("es",es);
ScriptEngineFactory sef = engine.getFactory();
String s = sef.getMethodCallSyntax("es", "sayHi", new String[0]);
// show the correct way to call the Java method
System.out.println(s);
engine.eval(s);
}
public static void sayHi(){
System.out.println("hihi");
}
}
Run Code Online (Sandbox Code Playgroud)
Welcome to Java world
es.sayHi()
hihi
Press any key to continue . . .
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8191 次 |
| 最近记录: |