天道酬勤,学无止境

Can I use javax.script in Android development and if yes how?

I'm having a bit of trouble with including javax.script.*; in an Android project. I need it so I can use the "eval" function in JavaScript, in order to parse arithmetic functions efficiently, without building a parser myself (I have utterly no experience in that and not a lot of time on my hands).

Is there any chance to use JavaScript or the "eval" function or something similar in my Android app?

Thanks for any info you can give me

评论

Try JEXL. It should do what you need but is simpler than the entire Javascript interpreter.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 在 android 中引用 javax.script.ScriptEngine 或评估 javascript 表达式(Reference javax.script.ScriptEngine in android or evaluate a javascript expression)
    问题 开发android应用程序时是否可以引用javax.script.ScriptEngine库? 如果不是,无论如何都可以在android中评估javascript表达式? 回答1 对于类 javax.script.ScriptEngine、javax.script.ScriptEngineFactory 等,您可以将 jsr223.jar 添加到您的 Android 项目中:只需将 .jar 文件复制到您的 libs 目录中,然后从 Properties->Java Build 添加它小路。 这些类将允许您的符合 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 的默认部分,但您可以轻松地组合您需要的任何库(假设大小合理,我不确定
  • 如何在 Java 应用程序中在 Android 上运行 Lua 脚本?(How do I run Lua scripts on Android in a Java application?)
    问题 我正在用 Java 开发一个使用 Lua 脚本的 Android 游戏。 为了执行这些脚本,我将 LuaJ 与 Java 的 ScriptEngine 类一起使用。 例如... ScriptEngineManager sem = new ScriptEngineManager(); scriptEngine = sem.getEngineByExtension(".lua"); script = ((Compilable)scriptEngine).compile("some lua here"); 但是,这显然在 Android 上不受支持(与 android 没有完整的 JVM 有关系,我在某处读到过)。 有没有办法在 Android 上使用 Lua 脚本? 也许有 LuaJ 替代品? 也许有一种直接使用 LuaJ 编译和执行 Lua 脚本的方法(虽然我看不出是怎么做的)。 仅供参考,当我尝试在 Android 上运行此代码时看到此错误: 05-06 16:12:32.870: E/dalvikvm(17509): Could not find class 'javax.script.ScriptEngineManager', referenced from method unearth.levels.LevelReader.<init> 05-06 16:12:32
  • How do I run Lua scripts on Android in a Java application?
    I'm developing an Android game in Java which uses Lua scripts. To execute these scripts, I'm using LuaJ with Java's ScriptEngine class. For example... ScriptEngineManager sem = new ScriptEngineManager(); scriptEngine = sem.getEngineByExtension(".lua"); script = ((Compilable)scriptEngine).compile("some lua here"); However, this is apparently not supported on Android (something to do with android not having a full blown JVM, I read somewhere). Is there a way I can use Lua scripts on Android? Maybe there's a LuaJ alternative? Perhaps there is a way of compiling and executing Lua scripts using
  • Java新特性之JavaScript引擎
    一. 什么是JavaScript引擎 早在Java 6时就引入了JavaScript引擎Rhino,它支持ECMAScript 5.1规范,它使用JSR 292言特性。Java 7时引入了invokedynamic,将JavaScript编译成Java字节码。Java 8引入的新的JavaScript引擎Nashorn比Rhino性能提高多倍,Nashorn就是javax.script.ScriptEngine的另一种实现。 1. 什么是jjs jjs是个基于Nashorn引擎的命令行工具。它可以接受JavaScript源代码为参数,并且执行这些源代码。 二. 为什么要JavaScript引擎 为了使Java和JavaScript两门语言在JVM环境下能相互调用。 三. 如何使用JavaScript引擎 1. jjs命令行实例 C:\Users\Administrator\Desktop\back\new λ touch test.js C:\Users\Administrator\Desktop\back\new λ vim test.js C:\Users\Administrator\Desktop\back\new λ cat test.js print("This is JavaScript test code."); C:\Users\Administrator
  • Reference javax.script.ScriptEngine in android or evaluate a javascript expression
    Is it possible to reference the javax.script.ScriptEngine library when developing an android application? If not is there anyway possible to evaluate a javascript expression in android?
  • 为什么getEngineByName(“ js”)返回null?(Why does getEngineByName(“js”) return null?)
    问题 无论我如何尝试, getEngineByName()始终返回null。 这是我的代码: final ScriptEngineManager manager = new ScriptEngineManager(); final ScriptEngine engine = manager.getEngineByName("js"); 但是,在这些行之后, engine为空。 我也尝试过: getEngineByName("javascript") getEngineByName("nashorn") 它们都返回null 。 实际上, manager.getEngineFactories()显示一个空数组-意味着根本没有工厂。 这两个答案建议将null传递给构造函数,但这对我不起作用: https://stackoverflow.com/a/25332851/900394 https://stackoverflow.com/a/25332851/900394 这个答案说这是一个已修复的错误。 更新: 那是eclipse中的一个Android应用程序项目。 我不知道它与Java项目有什么不同。 现在,我刚刚打开一个新的Java Project ,编写了以下几行,并且得到了一些结果: import javax.script.ScriptEngine; import javax
  • Why does getEngineByName(“js”) return null?
    Whatever I try, getEngineByName() keeps returning null. Here's my code: final ScriptEngineManager manager = new ScriptEngineManager(); final ScriptEngine engine = manager.getEngineByName("js"); But engine is null after these lines. I also tried: getEngineByName("javascript") getEngineByName("nashorn") They all return null. Actually, manager.getEngineFactories() shows an empty array - meaning there are no Factories at all. These 2 answers suggest passing null to the constructor, but it didn't work for me: https://stackoverflow.com/a/25332851/900394 https://stackoverflow.com/a/25332851/900394
  • 使用数学运算符将字符串转换为Integer [重复](String with math operators to Integer [duplicate])
    问题 这个问题已经在这里有了答案: Java中数字的数学表达式(字符串) (2个答案) 8年前关闭。 我有一个带有数学运算符的字符串,需要将其转换为一个int (答案)。 下面的代码不起作用,但是我不确定如何使answer变量起作用。 String question; int answer; question = "7/7+9-9*5/5"; answer = Integer.parseInt(question); 回答1 1. Javascript引擎 public class MainTest { public static void main(String[] args)throws Exception { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("js"); Object result = engine.eval("7/7+9-9*5/5"); System.out.println(result); } } 2. Java编译器 a)将字符串编译成Java类 b)使用自定义的ClassLoader加载类。 c)使用反射将其执行。 这是一个示例: import java.io.IOException
  • Google App Engine 是否支持 Java Script Engine? [关闭](Does Google App Engine support Java Script Engine? [closed])
    问题 关闭。 此问题不符合 Stack Overflow 准则。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其成为 Stack Overflow 的主题。 7年前关闭。 改进这个问题 我想在 Google App Engine 运行时内动态评估 JavaScript 代码。 Java 有此功能,但想知道 GAE 是否也支持此功能。 如果您能提供一个简单的代码将不胜感激,如果您使用它,请分享有关它的评论,谢谢。 ... GAE 支持脚本语言,但默认情况下不注册“JavaScript”服务。 所以开箱即用的 GAE 不会评估 JavaScript。 回答1 上次试过,虽然ScriptEngine被列入白名单,但是在生产环境中是不可用的。 我必须将 Rhino.jar 与我的应用程序一起打包。 有关 Java 中脚本的一般用法的示例,您可以参考 Java 文档本身。 不过,请注意,在 GAE/J 环境中,您需要直接调用 Rhino API。 例如, // Import statements. import org.mozilla.javascript.Context; import org.mozilla.javascript.Scriptable; private Object executeUsingRhino(String script) throws Exception
  • 如何为 Flutter 应用程序开发设置 Android Studio? [关闭](How can I setup Android Studio for Flutter application development? [closed])
    问题 关闭。 这个问题需要更加集中。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑这篇文章来关注一个问题。 2年前关闭。 改进这个问题 我有在 Android Studio 中开发 Android 应用程序的经验。 最近跨平台应用开发 Flutter alpha 版本发布。 文档中提到可以在Android Studio/IntelliJ、Visual Studio Code中开发Flutter应用。 但是我不知道如何为 Flutter 应用程序开发设置我的 Android Studio。 回答1 是的你可以 !! 您可以使用此链接获取说明: https://flutter.io/using-ide/ https://flutter.io/get-started/editor/ 但基本设置是: 启动安卓工作室。 打开插件首选项(macOS 上的首选项>插件,Windows 和 Linux 上的文件>设置>插件)。 选择 Browse repositories...,选择 Flutter 插件并点击安装。 当提示安装 Dart 插件时,单击是。 出现提示时单击重新启动。 回答2 你可以在 Android Studio 中安装 Flutter 和 Dart 插件。 此外,您必须在开发机器(windows、MAC)上安装 flutter SDK
  • 在 Android 中执行数学方程(Executing math equation in Android)
    问题 我需要能够在我的应用程序中处理诸如“(45+9)/8”之类的数学方程。 我只想使用 JavaScript 对其进行评估,但意识到我无法在 Android 中使用 javax.script。 所以,我找到了 WebView,但我在使用它时遇到了一些麻烦。 大多数示例是指使用带有 JS 代码的外部页面,或使用“javascript: var return ...等”。 我需要使用后者,但在将变量返回到我的应用程序时遇到了一些麻烦。 是否可以让 JS 评估它然后将值写入隐藏的 TextView? 回答1 查看 exp4j。 它是一个简单的 java 表达式求值器。 对于您在问题中发布的方程式,您可以这样做: Calculable calc = new ExpressionBuilder("(45+9)/8").build() double result1=calc.calculate(); 回答2 试试这个: import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.swing.JOptionPane; private void btnEqualsActionPerformed(java.awt.event.ActionEvent evt) { String
  • 始终运行 Android 应用程序(Always running Android application)
    问题 也许我还没有理解一些 Android 概念,但回答以下问题可能对我有很大帮助: 在我的 Android 应用程序中,我需要在后台每 x 秒从 Web 服务获取数据(应用程序似乎没有运行)。 我可以使用 Android 服务吗? http://developer.android.com/reference/android/app/Service.html 当来自 Web 服务的数据是我期望的数据时,我确实需要显示 Android 通知。 那么如何在具体活动中加载我的应用程序? 如何确保后台“服务”即使崩溃也能继续运行? 这就是,我如何重新启动我的应用程序的后台部分或“服务”? 回答1 在我的 Android 应用程序中,我需要在后台每 x 秒从 Web 服务获取数据(应用程序似乎没有运行)。 我可以使用 Android 服务吗? http://developer.android.com/reference/android/app/Service.html 是的,您可以使用服务,但问题是您想每 x 秒轮询一次 Web 服务吗? 这样你会很快耗尽电池电量。 您可以做的是安排一个不精确的重复任务(它会以大约 15 分钟的间隔被调用,但会与其他应用程序一起使用以降低电池使用量)。 请参见 AlarmManager.setInexactRepeating()。 或者使用使用 Google
  • 如何从java代码调用javascript函数(How to call javascript function from java code)
    问题 我正在尝试从 java 类调用 javascript 函数,但出现以下错误: -Could not find method sun.misc.Service.installedProviders, referenced from method javax.script.ScriptEngineManager.initEngines -Could not find method sun.misc.Service.providers, referenced from method javax.script.ScriptEngineManager.initEngines -Could not find method sun.misc.Service.installedProviders, referenced from method javax.script.ScriptEngineManager.initEngines -java.lang.VerifyError: javax.script.ScriptEngineManager 这里的代码: public void sendResult(){ ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager
  • Android 诊断模式 - 如何启用它?(Android Diagnostic Mode - How to Enable it?)
    问题 我想在 Android 上启用诊断 (DIAG) 模式。 我有以下相同的问题。 DIAG 模式有何帮助? 启用 DIAG 模式是否需要 Root 设备? 如何验证是否启用了 DIAG 模式? 它是可逆的吗? 我可以回到普通模式吗? 我正在使用 Google Nexus 5。 我对Android开发相当陌生。 任何帮助,将不胜感激。 回答1 1-我个人使用DM来收集和分析移动设备 (UE) 和网络之间的消息。 我将它与 Qualcomm QXDM 和 QPST 工具一起使用来分析无线协议栈消息。 对于商用电话,通常会阻止 DM 作为安全措施,因为它允许您对 UE 发送/接收的消息进行解封装。 直到现在我还没有听说过它的其他用途。 2-是的,我使用过的所有商业 UE(主要使用 Sony Xperia,目前使用 Xperia Ray)都已植根。 3-如果启用了 DIAG 模式,您可以在设备管理器中看到它。 这是我的快照。 这意味着您必须为设备安装正确的驱动程序(这对于许多手机来说很棘手)。 设备应该有高通芯片组! 4-是的,您可以取消设备的root权限。 我自己从未尝试过 Nexus。 请问你用它的目的是什么? 我的意思是它严格使用协议栈。 希望能帮助到你! 干杯 回答2 如果您有适当的软件,如 DFS CDMA 工具或 QPST
  • python可以开发app吗-python可以写APP吗(python能做手机软件吗)
    一枚程序媛程序媛2 人赞同了该文章用Python操作手机APP的项目,例如抖音、闲鱼之类的,看完后发现这些项目无一例外需要部署ADB环境。至于什么是ADB,很多大神都讲这里介绍几款可以在手机上编程的app,分别是: 1java和Android:AIDE集成开发环境。2C语言:c语言编译器、C4droid。3python:QPython3、Termux。 \ _ / 能用python写手机app吗?Python 慕丝5552790 1 回答猫知道 厉害了!如何Python写一个安卓APP,附源码!安装QPython3,这个直接在手机应用中搜索就行,如下,直接点击下载: 2安装成功后,打开这个软件,主界面如下,主要包括6个部分,终端类似python shell,可。 ∪▂∪ 之前安利过一款手机上运行Python的神器Termux,不过Termux的使用比较重,它实际是一款linux系统模拟器,安装好Termux后还要再安装python,并且是全命令行Termux不仅可以帮助你学习和使用Linux系统,更可以通过安装各种插件,当做我们python全栈开发利器!今天我就带大家了解下,如何在手机上玩转Python 爬虫。 ∩﹏∩ python大法可以开发手机APP吗? 关注问题?写回答iOS Python 应用程序(软件) Android 移动开发python大法可以开发手机APP吗?
  • Java ScriptEngineManager 不再适用于 Mountain Lion 的 AppleScript(Java ScriptEngineManager no longer works with Mountain Lion's AppleScript)
    问题 自从我升级到 Mountain Lion 后,我就无法通过 Java ScriptEngineManager 运行我的 AppleScript 代码。 在 Apple 页面(链接)上找到的示例代码为engine对象返回 null。 public static void main(String[] args) throws Throwable { String script = "say \"Hello from Java\""; ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine engine = mgr.getEngineByName("AppleScript"); engine.eval(script); } 有人知道任何解决方法吗? 回答1 我通过在 jar 的文件夹“META-INF/services”中添加一个名为“javax.script.ScriptEngineFactory”的文件来使其工作,如ytw所示。 我还必须更改一些代码:语言似乎不再是“AppleScript”而是“AppleScriptEngine”。 所以这应该有效: public static void main(String[] args) throws Throwable { String script =
  • How Jack (Java Android Compiler Kit) will affect Scala developers
    Now with announcement of Jack Google clarified the foreseeable future of Java in relation to Android. But what are the implications to Scala and other JVM-based languages developers. In particular: Scala does it's magic due to own compiler that produces Java bytecode. But Jack toolchain doesn't deal with bytecode. Will generated bytecode gain any optimization benefits of Jack processing? Starting from Scala 12 only Java 8+ is supported. That is the generated bytecode is Java 8+ too. Can Jack utilize Java 8 bytecode (without or with limitations)? Can newly supported Java 8 features be used for
  • Java7 / Rhino中已编译与已解释JavaScript的性能(Performance of the compiled vs. interpreted javascript in java7 / Rhino)
    问题 我在Java7中使用Rhino javascript引擎时遇到了性能问题,很快-我的脚本(用于解析和编译文本)在Chrome中的运行速度比Java7 Rhino脚本引擎中的运行速度快了50-100倍。 我试图找到改善情况的方法,并且发现Rhino支持脚本的编译。 我尝试使用自己的脚本执行此操作,但实际上并没有看到任何改进。 最后-我得到了一个虚拟的简短测试套件,在该套件中,我看不到编译版本和解释版本之间的性能差异。 请让我知道我在做什么错。 注意:一些消息来源提到,Rhino引擎运行的编译脚本比直接用Java编写的“相同”代码慢大约1.6倍。 不确定此示例中使用的“脚本编译”是否应该与此处假定的相同。 测试Java类在下面,示例结果是我在机器上从中得到的... 结果 Running via com.sun.script.javascript.RhinoScriptEngine@c50443 ... time: 886ms, chars: 38890, sum: 2046720 time: 760ms, chars: 38890, sum: 2046720 time: 725ms, chars: 38890, sum: 2046720 time: 765ms, chars: 38890, sum: 2046720 time: 742ms, chars: 38890, sum
  • 将 Excel 工作表中的数据反映到 android 应用程序(Reflect Data in the Excel sheet to the android app)
    问题 我是安卓开发的新手。 我有两个问题: 我有一个 Excel 工作表作为我的数据的数据库。 我想在我的 android 应用程序中显示该数据。 我该怎么做? 我必须使用 SQLite 数据库吗? 如果是,那么如何? 如果以后 Excel 表格有任何变化,那么这些变化将如何反映在应用程序中? 在此先感谢您的帮助。 回答1 要在 android 中读取 excel 文件,您应该使用一些 excel 库,例如 JExcelApi、Apache POI。 读完后,可以将它们写入SQLite dababase,以减少excel解析时间。 当您解析 excel 文件时,您将文件的上次修改时间保存到文本文件或首选项中,每当您的应用程序运行时,将它们合并并在上次修改时间不同时更新它。 回答2 欢迎来到堆栈溢出! 我有一个 Excel 表作为我的数据的数据库。我想在我的 android 应用程序中显示该数据。我该怎么做? 我必须使用sqlite数据库吗?如果是,那么如何? 这是如何从服务器读取 .xls 文件的示例(您也可以从 SDCARD 读取文件) 假设您的 .xls 如下所示 那么你必须创建sqlite数据库并创建带有字段(项目编号,描述,价格,数量)的表你也可以创建依赖于.xls文件的字段。 从 .xls 读取数据后插入到 sqlite 数据库 注意:如果文件格式不好,有时使用 xls
  • 如何使用MS Visual Studio进行Android开发?(How can I use MS Visual Studio for Android Development?)
    问题 您可以使用Visual Studio进行Android开发吗? 如果是这样,您将如何设置android SDK而不是.NET Framework,是否有任何特殊设置或配置? 回答1 是的,您可以使用“ vs-android”使用Visual Studio for Android(本机)。 设置步骤如下: 在此处下载Android SDK。 在此处下载Android NDK。 在此处下载Cygwin。 在此处下载JDK。 在此处下载Visual Studio 2010、2012或2013。 在此处下载vs-android。 在此处下载Apache Ant。 设置环境变量: (控制面板>系统>高级>环境变量) ANDROID_HOME = <install_path>\android-sdk ANDROID_NDK_ROOT = <install_path>\android-ndk ANT_HOME = <install_path>\apache-ant JAVA_HOME = <install_path>\jdk _JAVA_OPTIONS = -Xms256m -Xmx512m 从此处下载示例。 它的工作原理就像一种魅力...到目前为止最好用。 回答2 是的你可以: http://www.gavpugh.com/2011/02/04/vs-android-developing