在 android 中引用 javax.script.ScriptEngine 或评估 javascript 表达式
Posted
技术标签:
【中文标题】在 android 中引用 javax.script.ScriptEngine 或评估 javascript 表达式【英文标题】:Reference javax.script.ScriptEngine in android or evaluate a javascript expression 【发布时间】:2010-11-30 01:52:55 【问题描述】:在开发安卓应用时是否可以引用 javax.script.ScriptEngine 库? 如果没有,是否有可能在 android 中评估 javascript 表达式?
【问题讨论】:
【参考方案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 库。
-
右键单击项目,转到属性(项目)。
在 Java Build Path 下,我选择了 Libraries 选项卡。
选择位于选项卡右中的添加库
在添加库下选择 JRE 系统库,然后单击下一步...
选择工作区默认 JRE (jre 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 应用程序中运行(函数等)
【讨论】:
以上是关于在 android 中引用 javax.script.ScriptEngine 或评估 javascript 表达式的主要内容,如果未能解决你的问题,请参考以下文章