标签: rhino

如何在OSX 10.6 Snow Leopard上最好地安装Rhino

我正在运行OSX 10.6 Snow Leopard,已下载rhino1_7R2并将其移至/ usr/local /

但我知道(虽然这会阻止它被操作系统更新改变)这可能不是它的最佳位置,并想象它可能需要连接到Java安装.

我对Rhino的用途是从终端命令行运行JavaScript,我正在寻求帮助,因为我相信我缺乏Java知识来快速解决这个问题.

我将不胜感激任何帮助或建议链接,

谢谢保罗

javascript java macos rhino osx-snow-leopard

6
推荐指数
2
解决办法
4265
查看次数

哪个JavaScript(ECMAScript)版本可以实现Java的Rhino实现(以及更新策略是什么?)

哪个版本的ECMAScript标准可以支持Java的JavaScript引擎Rhino,修复错误需要做多少工作,并使实现与最新的标准化版本保持同步?

javascript java programming-languages rhino

6
推荐指数
2
解决办法
3717
查看次数

是否可以在Java 6中设置RhinoScriptEngine的优化级别?

遇到了 Rhino在通过javax.script.ScriptEngineAPI 运行Rhino时抛出"编译脚本时遇到的代码生成错误:方法生成的字节码超过64K限制"异常的问题.接受的解决方案似乎是要调用setOptimizationLevel(-1)sun.org.mozilla.javascript.Context.

不幸的是,我似乎无法访问由Context该创建的ContextFactory.我曾尝试加入ContextFactory.ListenerContextFactory.getGlobal()将修改Context创建之后,但我的听众似乎永远不会被调用.我还看了一下来自Java 6RhinoScriptEngine源,看看是否有一个我可以设置的属性,ContextFactory以便确定优化级别的值.

据我所知,在Java 7中,RhinoScriptEngine设置优化级别-1默认,并能够通过设置的优化级别rhino.opt.level属性.比较makeContext()方法在Java 7的版本makeContext()在方法的Java 6版本,看看我的意思.

据我所知,我认为我最好的选择是直接运行Rhino,如使用Rhino运行CoffeeScript编译器的示例所示.虽然你可以看到,代码很麻烦,所以javax.script.ScriptEngine如果可能的话,我宁愿使用API,同时继续支持Java 6.还有其他选择吗?

java rhino

6
推荐指数
1
解决办法
4538
查看次数

克隆整个JavaScript ScriptEngine

我需要以某种方式深度克隆我的ScriptEngine对象的整个绑定集.

我试过了什么

  • 到目前为止,我已经尝试过Cloner库来克隆整个Bindings结构.如果它有用,那将是很好的,因为它可以确保精确的副本,包括私有变量.但这会导致jvm堆损坏(jvm只是崩溃,退出代码为-1073740940).有时它不会崩溃,但会发生奇怪的事情,比如System.out.println()停止工作应该......

  • 我还研究了使用ScriptEngine中的js代码克隆对象,这样我就可以将它们作为NativeObjects获取并在一些java地图中管理它们.但是我发现的所有克隆方法都存在缺陷.我想要一个精确的对象快照.例如,如果每两个对象A和B的包含字段(比如a.fa和b.fb),其引用相同的对象C,使用克隆时jQuery.extend()(例如)的字段a.fab.fb克隆的a和b的将引用的不同的克隆c,而不是引用一个相同的克隆.还有许多其他边缘问题.

  • 我还尝试使用Cloner克隆整个ScriptEngine(不仅仅是绑定),我还尝试使用Rhino的js引擎并克隆整个范围(而不是Bundeled ScriptEngine包装器).但堆腐败问题仍然存在.

为什么我需要这样做

我需要这个,因为我必须能够将整个ScriptEngine绑定的值恢复到之前的某个点.我需要制作绑定的精确快照.

该应用程序是我的博士研究项目的一部分,该项目包括运行状态机和节点(在java中实现),其中附带了js代码.js代码由最终用户输入,并且在运行时被逐出.当无法通过路径到达最终状态时,算法会向后退步,尝试查找备用路径.在每个步骤向后,它必须撤消js引擎绑定中可能发生的任何更改.


所有全局变量名称在js evaling之前都是已知的,并且是对象(用户在节点的代码中键入,然后将其组织(在java中)到具有某些名称模式的js对象中).但是他们的内容可以是任何东西,因为它是由用户js代码控制的.

所以我想我现在唯一的解决方法是使用js代码克隆js对象.

javascript java clone rhino scriptengine

6
推荐指数
1
解决办法
1164
查看次数

使用RHINO js引擎发出http请求

我正在尝试使用Mozilla/Rhino js引擎在命令行中测试一些SOAP请求.但是,用于发出请求的正常对象(XMLHttpRequest,HttpRequest)似乎都不可用.为什么是这样?我可以导入库吗?

javascript rhino

6
推荐指数
1
解决办法
7379
查看次数

如何将Rhino生成的JSON数据结构(NativeObject)转换为Java数据结构?

我试图在JavaScript代码中生成数据结构,并处理来自Java(Java 6或7中的Rhino)的结果.

我成功地使用Java从Java调用JS函数:

Object result = invocableEngine.invokeFunction(functionName, parameters);
Run Code Online (Sandbox Code Playgroud)

现在,在JS方面,该结果是一个JSON数据结构,如下所示:

{ 
  "key1" : { "key1_1" : "value1_1", "key1_2" : 11 },

  "key2" : [ {  "key2_1": "foo2"
              , "key2_1" : "bar2" },

             {  "key2_1": "foo2"
              , "key2_1" : "bar2"
              , "key2_3" : [1,2,3] } ]
}
Run Code Online (Sandbox Code Playgroud)

然而,在Java方面,"result"是类型的对象 sun.org.mozilla.javascript.internal.NativeObject

有没有办法让我将它转换为合理的Java数据结构,而没有将JSON序列化为字符串然后使用Gson解析它的开销?

假设目前数据结构被合理地定义,例如,我知道对象是具有键"key1"和"key2"的散列,第一个映射到具有键"key1_1"和"key1_2"的散列; 第二个映射到散列数组,每个散列都有标量键"key2_1"和"key2_2"以及数组"key2_3".

我的两个优先事项是:

  1. 性能(这是我对序列化+ Gson-parse持谨慎态度的一个原因)
  2. Java 6,7和8之间的可移植性(但是,我更喜欢实质上更快的非便携式解决方案).

java json rhino

6
推荐指数
1
解决办法
1236
查看次数

从Android应用程序控制DOM元素

我试图从Android设备控制Play/Pause html DOM元素(在PC中打开的浏览器中).

在html页面(在谷歌Chrome浏览器中)有一个<video>标签,所以我可以像这样控制它:

//js code
document.querySelector("video").play();
document.querySelector("video").pause();
Run Code Online (Sandbox Code Playgroud)

但我希望从Android设备运行,所以我使用GCM.

在这里阅读并获得了一些见解,但我仍然有一些问题.

  • 首先,由于我在eclipse中编写,并且它没有看到document变量,因此会产生错误.那么eclipse如何element在html页面中识别出来,以便我可以在设备上编译和安装apk?

  • 我在哪里指定要与之通信的页面网址?(发送播放/暂停命令)

  • 要在java中运行js,我正在使用Rhino.我查看了文档中的示例,但我仍然不确定注释是否足以声明js函数.@JSFunction

这是我的代码:

import com.alaa.chromote.util.SystemUiHider;
import com.google.android.gcm.GCMRegistrar;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.Toast;
import android.view.View.OnClickListener;

import org.mozilla.javascript.*;
import org.mozilla.javascript.annotations.*;

public class MainApplication extends Activity {
    private final static String GCM_SENDER_ID = "484514826047";
    private static final String LOG_TAG = "GetAClue::GCMIntentService";

    private …
Run Code Online (Sandbox Code Playgroud)

android rhino google-cloud-messaging

6
推荐指数
1
解决办法
171
查看次数

如何确定哪个javascript引擎,rhino或nashorn正在运行我的代码?

如何在浏览器中确定javascript引擎有几个问题.我必须编写必须在rhino和nashorn上运行的javascript代码.

如何确定我的代码是在rhino还是nashorn上运行?是否存在可以确定引擎的典型函数,变量,常量?

javascript rhino javascript-engine nashorn

6
推荐指数
1
解决办法
2339
查看次数

使用javascript语言编译JasperReport时出现异常

我正在尝试编译JasperDesign以编程方式创建报告.由于我需要在Javascript中包含条件样式,因此我相应地设置了JasperDesign语言:

val jasperDesign = new JasperDesign
jasperDesign.setLanguage("javascript")
Run Code Online (Sandbox Code Playgroud)

请注意,我在Java 8上使用Scala 2.11,在Play for Scala 2.5上运行

由于JasperReports 6.4.3(我正在使用的版本)依赖于rhino 1.7.6,我将它添加到类路径中:

libraryDependencies += "org.mozilla" % "rhino" % "1.7.6"
Run Code Online (Sandbox Code Playgroud)

问题是每当我编译JasperDesign时,我都会遇到异常.即使我不包含Javascript条件样式,也会发生这种情况:

java.lang.NoSuchMethodError:org.mozilla.javascript.ContextFactory.enterContext()Lorg/mozilla/javascript/Context; at net.sf.jasperreports.compilers.JavaScriptClassCompiler.compileUnits(JavaScriptClassCompiler.java:124)at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:203)at net.sf.jasperreports.engine.JasperCompileManager .compile(JasperCompileManager.java:357)at net.sf.jasperreports.engine.JasperCompileManager.compileToStream(JasperCompileManager.java:326)at net.sf.jasperreports.engine.JasperCompileManager.compileReportToStream(JasperCompileManager.java:599)

如果我删除jasperDesign.setLanguage("javascript")我没有编译错误.这里缺少什么?Nashorn和Rhino之间是否存在冲突?

java rhino jasper-reports nosuchmethoderror playframework

6
推荐指数
1
解决办法
223
查看次数

如何在three.js中覆盖GLTF材料

我正在尝试创建一种动态方式来在 Three.js 中的 gltf 导入模型上显示太阳能数据。目的是将不同的纯色与模型的不同部分相关联,并能够关闭和打开这些部分。我目前的障碍是更改 gltf 中材料的颜色。

我曾尝试使用 ObjLoader 来代替我输入自己的材料,但这不起作用:/

这是我目前拥有的js:

        const gltfLoader = new THREE.GLTFLoader();
        gltfLoader.load('Building.glb', (gltf) => {
            const root = gltf.scene;
            scene.add(root);

            const box = new THREE.Box3().setFromObject(root);
            const boxSize = box.getSize(new THREE.Vector3()).length();
            const boxCenter = box.getCenter(new THREE.Vector3());

            frameArea(boxSize * 0.5, boxSize, boxCenter, camera);

            controls.maxDistance = boxSize * 10;
            controls.target.copy(boxCenter);
            controls.update();
          });


    function frameArea(sizeToFitOnScreen, boxSize, boxCenter, camera) {
        const halfSizeToFitOnScreen = sizeToFitOnScreen * 0.5;
        const halfFovY = THREE.Math.degToRad(camera.fov * .5);
        const distance = halfSizeToFitOnScreen / Math.tan(halfFovY);
        const direction …
Run Code Online (Sandbox Code Playgroud)

rhino three.js grasshopper gltf

6
推荐指数
1
解决办法
6042
查看次数