我正在尝试适应thisanswer对于正则表达式替换的情况:但是,执行该代码我总是会遇到异常:javax.script.ScriptException:sun.org.mozilla.javascript.internal.EvaluatorException:ThechoiceofJavaconstructorreplacematchingJavaScriptargumenttypes(function,java.lang.String)isambiguous;candidateconstructorsare:classjava.lang.Stringreplace(java.lan
我正在调用ScriptableObject的@JSFunction注释方法JavaScript文件Target=Packages.com.acme.rhino.Target;functionevaluate(){vart=Target();t.addModifier("foobar",1);returnt;}Java文件publicclassTargetextendsScriptableObject{privatestaticfinallongserialVersionUID=1L;publicListmodifiers=newLinkedList();@JSConstructorpu
我不清楚使用(Mozilla)Rhino时如何在Javascript和Java之间转换类型的规则。关于String的文档中有一些细节:It'simportanttokeepinmindthatJavastringsandJavaScriptstringsarenotthesame[…]Rhinoprovidessomehelpinreducingthedifferencesbetweenthetwotypes.First,youcanpassaJavaScriptstringtoaJavamethodthatrequiresaJavastringandRhinowillperformt
最后一次发布是在2008-03-06。这是怎么回事?它仍在积极开发中吗?有替代品吗? 最佳答案 Rhino(1.6r2)的略微修改版本是partofJava6最重要的是,根据我对Rhino的测试,Rhino的功能非常完备,所以真的没有什么可以继续开发的了,显然它也没有错误。我会说Rhino是那些真正完成的稀有库之一。 关于java-犀牛怎么了?它仍在积极开发中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflo
我正在尝试让require.js使用Java6和Rhino在服务器端加载模块。我能够很好地加载require.js本身。Rhino可以看到require()函数。我可以这么说,因为当我将require()更改为requireffdkj()之类的其他内容时,Rhino提示它找不到该函数。但是当我尝试要求一个简单的JS,比如hello.jsvarhello='hello';使用以下任一方法:require('hello');require('./hello');这是行不通的。我明白了Causedby:javax.script.ScriptException:sun.org.mozilla.
最近我一直在研究Java的ScriptEngineAPI,即javascript引擎,它使用Rhino来处理所有事情。我偶然发现Rhino没有XMLHttpRequest。我想知道是否有人知道解决这个问题的可能方法? 最佳答案 您实际上需要在Java中定义XMLHttpRequest。它已经完成了-检查this出。 关于java-Rhino中的XMLHttpRequest?,我们在StackOverflow上找到一个类似的问题: https://stackov
在我的代码中,所有脚本都包含在.js文件中。每当其中一个脚本包含错误时,我都会得到:javax.script.ScriptException:sun.org.mozilla.javascript.internal.EcmaError:ReferenceError:未定义“不存在”。(#5)在的第5行令我烦恼的是。多个文件在一个ScriptContext中,并且很难追踪错误。它看起来也很可怕。有没有办法用实际文件名替换?我看到的所有方法都不支持传递File对象,所以我在这里真的很困惑。 最佳答案 使用ScriptEngine.FILE
基本上我有一个Java系统,它通过Rhino或Nashorn使用Javascript运行许多“插件”脚本,具体取决于用户安装的JRE。我在Java环境中还有一个系统,允许在运行时插入额外的.JAR文件。一切都很好,花花公子。但是,我现在遇到了一种情况,我想要一些稍微不同的东西:我想从Rhino/Nashorn引擎实例中将一个.JAR文件加载到ClassPath中,以便该实例可以使用这些类(仅该实例),然后在引擎完成运行时删除它们。我知道我可以轻松地调用我现有的Java例程来使用JavaScript加载.JAR文件的URL,但是这些类随后会永久安装,我无法删除它们。问题基本上源于这样一个
这是我的情况:我可以访问Java类中的RhinoContext对象。我想读取一堆.js文件并将它们传递给Rhino上下文以对它们进行评估。我对让.js文件中的函数在脚本上下文中可用并不真正感兴趣,因为我只是让.js文件中声明的变量可用(这是一种工具验证问题)。理想情况下,我会读入并尝试一次评估每个文件,而不是逐行评估。我注意到Context中有一个名为evaluateReader()的方法(参见RhinoAPI)。我的第一个猜测是我应该获取我想要加载的所有文件,遍历所有文件,然后调用此方法为每个文件传递某种读取器对象,太好了,现在它们都在我的脚本上下文中。所以,假设我在正确的轨道上,谁
我使用的是MozillaRhinoJavaScript模拟器。它允许我将Java方法添加到上下文中,然后像调用JavaScript函数一样调用它们。但是除非我使用静态方法,否则我无法让它工作。问题出在文档的这一部分:Ifthemethodisnotstatic,theJava'this'valuewillcorrespondtotheJavaScript'this'value.Anyattempttocallthefunctionwitha'this'valuethatisnotoftherightJavatypewillresultinanerror.显然,我的Java“this”值