2012-09-13 29 views
11

Rhino 1.7R4 kullanarak ve Java konsoluna benim JavaScript kodundan bir dize yazdırmak istediğiniz JavaRhino baskı fonksiyonu

içindeki JavaScript kod çalıştırmasına 1.2 env.js ediyorum. göre

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

kullanmalıyım: print ("Merhaba dünya"); Bulduğumda

ama olsun:

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) 

Ben herhangi bir çıktı görmüyorum document.write ben kullanın.

+0

Javascript ve java kodunuzu getirin. – randominstanceOfLivingThing

cevap

18

Bunun yerleşik modda çalışacaktır sanmıyorum, bunu sadece Rhino konsolunda çalışacağını düşünüyorum.

java.lang.system.out.println dosyasını kullanabilirsiniz. Bu çalışmalıdır: -

java.lang.System.out.println("HELLO") 
6

Kendi oluşturabilirsiniz:

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)); 
} 
14

Gergedan kabuğunun kolayca kullanabileceği aynı kapsamı kullanabilirsiniz. Gergedan kabuğu, "print" gibi çeşitli işlevleri tanımlayan Global adlı özel olarak yapılandırılmış bir kapsam örneğine dayanır. Aşağıdaki örnek Global ve "yazdırma" işlevinin nasıl kullanılacağını göstermektedir. Bu "Merhaba Dünya!" Yazdı iki kere stdout'a.

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(); 
    } 
} 

Ben Rhino shell executable içinden kazma sonra deney yoluyla bu keşfetti. Ocak 2014, görünecektir

new org.mozilla.javascript.tools.shell.Global(org.mozilla.javascript.Context.enter()) 

üzerinde yöntemleri ve özellikleri listesinin olarak

"defineClass", 
"deserialize", 
"doctest", 
"gc", 
"help", 
"load", 
"loadClass", 
"print", 
"quit", 
"readFile", 
"readUrl", 
"runCommand", 
"seal", 
"serialize", 
"spawn", 
"sync", 
"toint32", 
"version" 
+0

cevabımda güncellemeye bakın – flow

5

:

Ve burada bütünlüğü uğruna

Global tarafından tanımlanan diğer küresel fonksiyonları Aşağıdakileri yapın:

defineClass 
deserialize 
doctest 
gc 
getConsole 
getErr 
getIn 
getOut 
getPrompts 
help 
init 
init 
initQuitAction 
installRequire 
isInitialized 
load 
loadClass 
pipe 
print 
quit 
readFile 
readUrl 
runCommand 
runDoctest 
seal 
serialize 
setErr 
setIn 
setOut 
setSealedStdLib 
spawn 
sync 
toint32 
version