当前位置: 首页 > 面试题库 >

在Android上使用Rhino的问题

赫连睿
2023-03-14
问题内容

我正在尝试在Android的Java应用程序中使用Mozilla
Rhino
评估一些JavaScript。我正在使用Eclipse + ADT插件。

首先,我尝试仅从Mozilla的网站下载Rhino
.jar文件,并将其作为Eclipse中的库添加到项目中。Eclipse很好地识别了它并编译了该应用程序。但是,在运行它时,调用时会出现异常Context.evaluateReader()(有关堆栈跟踪,请参见下文)。

然后,我尝试将Rhino源代码添加为Eclipse中的一个单独的Android项目,将其标记为一个库并在我的项目中对其进行引用,这足以使Eclipse对其进行编译,但导致了相同的错误。

这是我得到的堆栈跟踪(java.lang.UnsupportedOperationException: can't load this type of class file

Thread [<7> Thread-8] (Suspended (exception UnsupportedOperationException)) 
    DefiningClassLoader(ClassLoader).defineClass(String, byte[], int, int, ProtectionDomain) line: 338  
    DefiningClassLoader.defineClass(String, byte[]) line: 62    
    Codegen.defineClass(Object, Object) line: 159   
    Codegen.createScriptObject(Object, Object) line: 114    
    Context.compileImpl(Scriptable, Reader, String, String, int, Object, boolean, Evaluator, ErrorReporter) line: 2440  
    Context.compileReader(Reader, String, int, Object) line: 1326   
    Context.compileReader(Scriptable, Reader, String, int, Object) line: 1298   
    Context.evaluateReader(Scriptable, Reader, String, int, Object) line: 1137  
    TimetableProcessor.evaluate(InputStream, String, String[]) line: 31 
    TimetableProcessor.processBasicData(InputStream, String) line: 58   
    TimetableProcessor.process(InputStream, String) line: 52    
    TimetableUpdater.update() line: 53  
    Main$1$1.run() line: 22

我的代码中出现异常的部分看起来像这样:

        Context cx = Context.enter();
        cx.setLanguageVersion(Context.VERSION_1_7);
        Scriptable scope = cx.initStandardObjects();
        try {
            Object result = cx.evaluateReader(scope, new InputStreamReader(data), /* <<< exception here */
                    filename, 0, null);
        } catch (IOException e) {
            // ...
        }

我还发现了此博客文章,其中包含类似的代码,并说它可行。作者说他使用了来自Android脚本站点的jar文件。我找到的唯一jar文件位于rhino_extras_r3.zip。但是,它不包含.class文件,而是一个classes.dex文件。当我在Eclipse中将其添加为库时,它无法识别其中包含的类,因此由于缺少对Rhino类的引用而无法编译我的项目。

感谢您提供任何有关如何使其正常工作的帮助!


问题答案:

我终于得到它的工作。我应该更加关注我链接的那篇博客文章。

如果我添加线

cx.setOptimizationLevel(-1);

要禁用优化,一切都会正常进行。



 类似资料:
  • 我想实现与以下2个请求旋转: 1。在显示选择项列表时,文本如下图所示左对齐。4. 2。在选择一个项目后,我想让所选的一个显示右对齐,如下图所示。 我的旋转器布局旋转器布局如下: 和适配器的getView如下所示: 但是,如果将行改为. 将显示为picture.3和picture.4. 如何修改以同时到达picture.1和picture.4?

  • 我的目的是在AdaptOpenJDK 8 VM中提供一个JSR-223 javascript引擎。 所以我想用已经熟悉的犀牛。 并指定在那里下载jsr-223脚本引擎包装器。这里: https://java.net/projects/scripting ,但是这个链接已经死了。 我在哪里可以找到Rhino的JSR-223包装器? 或者可能有更好的替代方案,如JSR-223 JavaScript-E

  • Rhino 是用纯 Java 写成的 JavaScript 的开放源代码实现。它最常被用于嵌入 Java 应用程序,以便为终端用户提供脚本的能力。 在线Javadoc:http://www.ostools.net/apidocs/apidoc?api=rhino

  • 问题内容: 有人尝试过使用Android应用程序吗? 可能吗?我试图从中使用Jar,并收到以下异常: 我使用的代码非常简单 我有,,和在我的目录中。 在我的服务器应用程序中,此代码可以在相同的库中正常工作。 问题答案: msgpack :可在Android上正常使用 msgpack-rpc :适用于Android,但有一个警告。 具体来说,您需要为API级别8(Android 2.2.1)添加以下

  • 我有一些用RNCryptor加密的图像文件,我想对它们进行解密,并将它们用作框架布局的背景。我浏览了示例文件,但我的应用程序force在一段时间后关闭,没有显示任何图像。我使用JNCryptor库 我将加密图像放入raw文件夹,如下所示: 这是我活动中的代码: 这个文件可以很好地iOS这个代码: 这里是logcat输出: 08-2819:52:11.720:E/AndroidRuntime(106

  • 问题内容: 最近,我一直在使用Java的ScriptEngine API,即javascript引擎,该引擎使用Rhino进行所有操作。.我偶然发现Rhino没有XMLHttpRequest。我想知道是否有人知道解决这个问题的可能方法? 问题答案: 您实际上需要在Java中定义XMLHttpRequest。它已经完成-检查这出。