我一直在阅读Rhino作为在Java代码中实现JavaScript的有用方法.
阅读了一段时间后,在谷歌和这里搜索,我找不到一个真正的原因,我将在Java中使用JavaScript.
您是否可以指出在使用Rhino进行常规Java应用程序时发现的一些现实世界优势?
当我运行以下代码时,engine变量设置为null我使用OpenJDK 7(java-7-openjdk-i386)时.
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class TestRhino {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
try {
System.out.println(engine.eval("1+1"));
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
它java-6-openjdk与Oracle的运行良好jre1.7.0.知道为什么吗?
我正在使用Ubuntu 11.10.所有JVM都安装在/usr/lib/jvm.
嘿,人们很想知道你为nServiceBus,Rhino Service Bus和MassTransit提供或了解的任何资源.
我有一个简单的Java类,它有一些方法:
public class Utils {
public void deal(String price, int amount) {
// ....
}
public void bid(String price, int amount) {
// ....
}
public void offer(String price, int amount) {
// ....
}
}
Run Code Online (Sandbox Code Playgroud)
我想创建这个类的一个实例,并允许Javascript代码直接调用方法,如下所示:
deal("1.3736", 100000);
bid("1.3735", 500000);
Run Code Online (Sandbox Code Playgroud)
我现在能想到的唯一方法就是使用
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
engine.put("utils", new Utils());
Run Code Online (Sandbox Code Playgroud)
然后utils.deal(...)在Javascript代码中使用.我也可以在Javascript中为每个方法编写包装函数,但应该有一种更简单的方法来自动为类的所有公共方法执行此操作.
我想了解XMLHttpRequest如何在Javascript中工作的低级细节,但是我没有幸运地在Rhino或V8代码中找到实现代码.我对这两个项目中的代码都不熟悉,所以我可能不会找到合适的位置.
在任何地方都有可用的开源实现吗?
我正在使用Mozilla Rhino 1.7r2(不是JDK版本),我想从Java调用JS函数.
我的JS功能是这样的:
function abc(x,y)
{
return x+y
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
编辑:( JS函数在一个单独的文件中)
我跑的JSLint在检查犀牛使用jslintant.js.
我发现有些奇怪的东西,并想知道我是否可以从其他程序员那里得到一些意见.基本上,以下行获取JSLint "脚本URL"错误:
var a = '<a href="javascript:alert(\'I am a bookmarklet\');" >Drag me to your Toolbar</a>';
Run Code Online (Sandbox Code Playgroud)
错误:
Lint at line 124 character 35: Script URL.
Run Code Online (Sandbox Code Playgroud)
我已经进入了道格拉斯· 克罗克福德在fulljslint.js中编写的代码,并发现他确实按如下方式对此进行了测试:
// javascript url
jx = /(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i,
Run Code Online (Sandbox Code Playgroud)
因此,考虑到这种约束以及拖放bookmarklet仅使用A标记的HREF属性这一事实.我们如何动态创建通过JSLint测试的bookmarklet?
感谢您的输入.
我知道API非常不同,但是内置的JavaScript东西与Mozilla可以获得的Rhino构建之间是否有任何功能差异?
我正在寻找与Python2.x相当的javascript print "hi".我正在使用ubuntu终端中的Rhino javascript解释器.当我输入:
document.write{"hi"}
Run Code Online (Sandbox Code Playgroud)
我得到'文档'未定义的错误.
我正在使用Rhino 1.7R4和env.js 1.2在Java中运行Javascript代码
我想从我的Javascript代码中打印一个字符串到Java控制台.
根据:http: //evilroundabout.blogspot.com.au/2009/11/javascript-printing-rhino.html
我应该使用:print("Hello world");
但当我这样做时,我得到:
org.mozilla.javascript.EcmaError: ReferenceError: "print" is not defined. (svg-renderer-highcharts-2.1.4.js#20)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3687)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3665)
at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:3750)
at org.mozilla.javascript.ScriptRuntime.nameOrFunction(ScriptRuntime.java:1794)
at org.mozilla.javascript.ScriptRuntime.getNameFunctionAndThis(ScriptRuntime.java:2188)
at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1308)
at script.renderSVGFromObject(svg-renderer-highcharts-2.1.4.js:20)
Run Code Online (Sandbox Code Playgroud)
如果我使用document.write,我看不到任何输出.
rhino ×10
javascript ×9
java ×6
bookmarklet ×1
c# ×1
debugging ×1
javax.script ×1
jslint ×1
linux ×1
masstransit ×1
nservicebus ×1
openjdk ×1
scripting ×1
servicebus ×1
v8 ×1