之前说了一种在JDK 5中使用JSR223,并提供E4X支持的方案,上面的方案需要对Sun自带的jar进行修改,这可能会有版权之类的问题,所以我采用另外的一种方案,就是提供自己的JSR223的JavaScript实现。可以参考的资料有scripting.dev.java.net上面的其它脚本语言的JSR223实现,还有就是Sun的JavaScript的实现的代码,当然是反编译过的。
不过Sun的实现有点复杂,经过我的删减,最后得到了一个实现,我把它注册成名字为e4x。使用时需要JSR223, JSR173的API jar,Rhino的js.jar,xbean.jar,以及我的这个包。使用下面的代码可以测试:
java 代码
- ScriptEngineManager sem = new ScriptEngineManager();
- ScriptEngine engine = sem.getEngineByName(”e4x”);
- if (engine != null) {
- String str = “var order = <order> <person>alex </person></order>;print(order.person);”;
- try {
- Object result = engine.eval(str);
- System.out.println(result);
- } catch (ScriptException e) {
- e.printStackTrace();
- }
- }
同样,使用Rhino自带的examples下的e4x目录下的e4x_example.js可以正确解释。
限制
只实现了JavaScript的eval,没有binding和Invokable
下载
该引擎的实现下载地址如下: FullRhinoEngine.jar,Eclipse工程