首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rhino打印函数

Rhino打印函数
EN

Stack Overflow用户
提问于 2012-09-13 12:32:10
回答 4查看 17.7K关注 0票数 13

我正在使用Rhino 1.7R4和Java1.2在env.js中运行Javascript代码

我想从我的Javascript代码中打印一个字符串到Java控制台。

根据:http://evilroundabout.blogspot.com.au/2009/11/javascript-printing-rhino.html

我应该使用: print("Hello world");

但当我这样做时,我会得到:

代码语言:javascript
复制
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)

如果我使用document.write,我看不到任何输出。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-13 12:47:43

我不认为这会在嵌入式模式下工作,我认为它只会在Rhino控制台中工作。

您可以使用java.lang.system.out.println。这应该是可行的:

代码语言:javascript
复制
java.lang.System.out.println("HELLO")
票数 21
EN

Stack Overflow用户

发布于 2012-12-05 23:22:41

您可以很容易地使用rhino shell使用的相同作用域。rhino shell依赖于一个名为Global的特殊构造的scope实例,它定义了像"print“这样的几个函数。下面的示例演示了如何使用Global和"print“函数。这将打印"Hello World!“两次到stdout。

代码语言:javascript
复制
import org.mozilla.javascript.Context;
import org.mozilla.javascript.tools.shell.Global;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );

        Context cx = Context.enter();
        Global global = new Global(cx);
        cx.evaluateString(global, "print('Hello World!')", 
                "helloWorld.js", 1, null);
        Context.exit();
    }
}

我在深入研究Rhino shell executable之后,通过实验发现了这一点。

为了完整起见,下面是由Global定义的其他全局函数

代码语言:javascript
复制
"defineClass",
"deserialize",
"doctest",
"gc",
"help",
"load",
"loadClass",
"print",
"quit",
"readFile",
"readUrl",
"runCommand",
"seal",
"serialize",
"spawn",
"sync",
"toint32",
"version"
票数 15
EN

Stack Overflow用户

发布于 2012-09-13 12:46:22

您可以创建自己的:

代码语言:javascript
复制
function print() {
    for( var i = 0; i < arguments.length; i++ ) {
       var value = arguments[i];
       java.lang.System.out.print( value );
    }
    java.lang.System.out.println();
}

function printf( format ) {
    java.lang.System.out.printf( format, Array.prototype.slice.call(arguments) );
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12399462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档