在android中引用javax.script.ScriptEngine或者评估一个javascript表达式

时间:2009-09-21 13:06:29

标签: javascript android scriptengine

开发Android应用程序时是否可以引用javax.script.ScriptEngine库? 如果没有,那么有可能在android中评估一个javascript表达式吗?

4 个答案:

答案 0 :(得分:7)

对于类javax.script.ScriptEngine,javax.script.ScriptEngineFactory等,您可以将jsr223.jar添加到您的Android项目中:只需将.jar文件复制到您的libs目录,然后从Properties-添加它> Java Build Path。

这些类将允许您的JSR 223兼容引擎进行编译。然后,您可以new SomeScriptEngienFactory().getScriptEngine()来获取引擎。我已经成功地使用JNLua 1.0.4和Rhino 1.7R2。

文件jsr223.jar可以从http://www.java2s.com/Code/Jar/j/Downloadjsr223jar.htm下载,直接链接是http://www.java2s.com/Code/JarDownload/jsr223/jsr223.jar.zip

答案 1 :(得分:4)

javax.script.ScriptEngine不是android的默认部分,但你可以轻松地将你需要的任何库(假设大小合理,我不确定)并将它们包含在你的项目中。

答案 2 :(得分:3)

根据此post,Android SDK中不提供javax.script.ScriptEngine。您可以尝试以下步骤来包含库,但代码可能无法运行,即使它将进行编译。

在Windows中使用Android Development Toolkit,我执行了以下步骤来获取javax.script库。

  1. 右键单击该项目,转到Properties(Project)。
  2. 在Java Build Path下,我选择了Libraries选项卡。
  3. 选择位于选项卡中间右侧的添加库
  4. 在“添加库”下选择“JRE系统库”,然后单击“下一步...”
  5. 选择工作区默认JRE(jre 7)
  6. 单击“完成”。
  7. 在Java Build Path上单击Ok以存在项目属性。
  8. 然后加载了Javax.script。

答案 3 :(得分:3)

如果你想在Android中评估JS中的一些代码

1)你的gradle依赖项添加(rhino):

compile 'org.mozilla:rhino:1.7R4'

2)写一些像这样的代码来获得JS评估的结果

Context rhino = Context.enter()
// turn off optimization to work with android
rhino.optimizationLevel = -1

String evaluation = "2+2"

try {
    ScriptableProject scope = rhino.initStandardObjects()
    String result = rhino.evaluateString(scope, evaluation, "JavaScript", 1, null).toString()
} finally {
    Context.exit()
}

3)您可以在JS中编写更复杂的脚本,以便在Android应用程序中运行(函数等)。