jjzjj

java - 拦截Rhino中java对象的字段访问

是否可以在执行的JavaScript代码中拦截Java对象的字段(和方法)访问?就像JSCocoa中允许处理属性和方法访问的委托(delegate)一样。 最佳答案 您可以使用Context.setWrapFactory来指定如何包装Java对象。这里显示了打印字段访问和方法调用的包装器:InterceptWrapFactory.javaimportorg.mozilla.javascript.Context;importorg.mozilla.javascript.Scriptable;importorg.mozilla.java

java - 如何在运行时将 rhino/javascript 文件编译为 java 的 .class 字节码

我正在制作fallingsandgame在java。我希望用户能够使用更简单的语言为其编写自己的引擎。落沙游戏可能会占用大量CPU,因此我想让引擎尽可能快地运行,而不必手动编译。我需要知道如何在运行时将rhinojavascript文件编译为.class文件以供使用。我一直在寻找一种方法,但除了使用我不希望用户必须执行的命令行手动编译它之外找不到任何其他方法。 最佳答案 这里有一个简短的教程:Scripting:CompilingScriptsinJava 关于java-如何在运行时将r

java - 我可以为在 Java6 Rhino 脚本引擎中运行的 javascript 创建一个 'window' 对象吗

我想在我的Java6服务器上运行一些Javascript-即使用javax.scriptAPI,特别是Rhino脚本引擎。(尽管可以接受其他解决方案)脚本文件由第三方创建并提供支持,因此我不想下载和编辑它以防它随时间发生变化。脚本直接引用Rhino不似乎支持的“窗口”对象(可能还有“文档”对象等)。我可以这样做吗?如果可以,怎么做? 最佳答案 varwindow={}vardocument={}...当然,除非您用脚本试图访问的属性填充它们,否则它们不会有多大用处。您不能只使用标准浏览器API来填充它们-它们中的大多数在浏览器上下文

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

我正在运行OSX10.6SnowLeopard,已下载rhino1_7R2并将其移动到/usr/local/但是我知道(虽然这可以防止它被操作系统更新更改)这可能不是它的最佳位置并且想象它可能需要连接到Java安装。我对Rhino的预期用途是从终端命令行运行JavaScript,我正在寻求帮助,因为我认为我缺乏Java知识来快速解决这个问题。如果有任何帮助或建议链接,我将不胜感激,谢谢保罗 最佳答案 我以前没有用过Rhino,但我很快就从Mozilla上拿了1.7R2试用了一下。它似乎是一个标准的Javajar可执行文件。与Java

java - 合理处理JSR223 Rhino抛出的ScriptException

我开始遇到一些非常有用的JSR223脚本环境的肮脏小secret。我正在使用Java6SE附带的Rhino内置版本,通过JSR223的ScriptingEngine等访问它。当我得到一个由我导出到Javascript环境的Java对象引起的异常时,它是一个ScriptingException包装了一个sun.org.mozilla.javascript.internal.WrappedException包装我真正的异常(例如UnsupportedOperationException或其他)ScriptingException为getFileName()返回null,为getLineNu

java - 如何使用Maven类路径运行Java主类?

我目前正在使用Maven构建我的RhinoJavaScript项目、下载依赖库并在运行时管理类路径。我可以使用Mavenexec插件以下列方式运行JavaScript入口点:org.codehaus.mojoexec-maven-plugin1.1javaorg.mozilla.javascript.tools.shell.Mainruntimepath/to/entryPoint.js这很好用,但问题是maven需要大约10秒才能启动,这比我的程序运行时间长了大约10倍。有没有办法:提高mavenexec插件的性能,使其启动时间更短,或者导出maven将在运行时使用的类路径,以便我可

java - 有没有什么提示和技巧可以让 rhino 运行得更快?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。有什么提示和技巧可以让rhino运行得更快?我试图在Rhino中使用uglifyJs压缩一个大的js文件,这需要一分多钟。您对Java服务器端空间中的Rhino有任何提示或其他替代方案吗?

javascript - 捕获 Nashorn 的全局变量

我有一个Java7程序,它加载了数千个对象(组件),每个对象都有很多参数(存储在Map中),并在这些对象上执行各种Rhino脚本以计算其他派生参数,这些参数被存储回对象的Map.在运行每个脚本之前,一个Scope对象被创建,由对象的映射支持,在脚本运行期间用作JavaScript的范围。作为一个简单的例子,下面创建了一个HashMapa=10和b=20,并执行脚本c=a+b,结果为c=30.0存储回map中。虽然脚本看起来像是在创建一个全局变量c,Scope对象捕获它并将其存储在map中;使用不同的Scope执行的另一个脚本对象不会看到这个变量:publicclassRhino{pub

java - 将函数从 Java 公开到 Rhino

使用ScriptableObject.putProperty可以很容易地从Java向Rhino提供对象,但是有没有办法公开顶层函数?也就是说,我能否让Rhino中的脚本调用foo()并将该调用调用到Java代码? 最佳答案 嗯...yes,youcan.也许我没有正确理解你的问题(你所说的“顶级函数”是什么意思?)但是如果你已经将java对象暴露给Rhino,你可以调用它的方法。 关于java-将函数从Java公开到Rhino,我们在StackOverflow上找到一个类似的问题:

Java 脚本引擎 : using value on Java side?

在Java程序中,我正在调用用户定义的JavaScript程序:FileuserJSFile=...;javax.script.ScriptEngineManagermgr=newScriptEngineManager();javax.script.ScriptEnginescripEngine=mgr.getEngineByExtension("js");Objectresult=scripEngine.eval(newjava.io.FileReader(userJSFile));现在我想使用“result”:我怎样才能访问它?我可以将它识别为数组(我可以迭代它的成员吗)、Stri