【问题标题】:Reference javax.script.ScriptEngine in android or evaluate a javascript expression在 android 中引用 javax.script.ScriptEngine 或评估 javascript 表达式
【发布时间】:2010-11-30 01:52:55
【问题描述】:

在开发安卓应用时是否可以引用 javax.script.ScriptEngine 库? 如果没有,是否有可能在 android 中评估 javascript 表达式?

【问题讨论】:

    标签: javascript android scriptengine


    【解决方案1】:

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

    这些类将允许您的 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

    【讨论】:

    • 你能发布一个示例应用吗?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      1. 右键单击项目,转到属性(项目)。
      2. 在 Java Build Path 下,我选择了 Libraries 选项卡。
      3. 选择位于选项卡右中的添加库
      4. 在添加库下选择 JRE 系统库,然后单击下一步...
      5. 选择工作区默认 JRE (jre 7)
      6. 点击完成。
      7. 在 Java 构建路径上单击确定以存在项目属性。

      Javax.script 然后被加载。

      【讨论】:

        【解决方案4】:

        如果你想在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 应用程序中运行(函数等)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多