मैं जावास्क्रिप्ट इंजन नया जावा 8 Nashorn के साथ एक जावास्क्रिप्ट स्क्रिप्ट चलाने के लिए कोशिश कर रहा हूँ, लेकिन यह निम्न त्रुटि के साथ विफल:readFully जावा Nashorn जावास्क्रिप्ट इंजन के साथ परिभाषित नहीं
<eval>:1 ReferenceError: "readFully" is not defined
स्क्रिप्ट readFully समारोह है कि ऐसा करना चाहिए का उपयोग करता है वैश्विक स्कोप में परिभाषित किया गया है nashorn स्क्रिप्टिंग मोड सक्षम के साथ चलाया जाता है (जो स्क्रिप्टइंजिन के माध्यम से चलते समय डिफ़ॉल्ट है http://mail.openjdk.java.net/pipermail/nashorn-dev/2013-December/002562.html)।
import java.io.FileNotFoundException;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Test {
public static void main(String[] argv) throws FileNotFoundException, ScriptException {
ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("nashorn");
scriptEngine.eval("print('Hey!');print(print);print(readFully);");
}
}
यह नमूना प्रिंट हे:
यहाँ त्रुटि पुन: पेश करने के लिए एक नमूना है! और उसके बाद प्रिंट फ़ंक्शन का स्रोत कोड (एक अन्य नाशर्न अंतर्निहित फ़ंक्शन) और अंततः इसे पढ़ने के विधि के स्रोत कोड को मुद्रित करना चाहिए।
Exception in thread "main" javax.script.ScriptException: ReferenceError: "readFully" is not defined in <eval> at line number 1
at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:586)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:570)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:525)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:521)
at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:192)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
at com.github.bringking.maven.requirejs.Test.main(Test.java:14)
Caused by: <eval>:1 ReferenceError: "readFully" is not defined
at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:58)
at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:320)
at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:292)
at jdk.nashorn.api.scripting.NashornScriptEngine.__noSuchProperty__(NashornScriptEngine.java:272)
at jdk.nashorn.internal.scripts.Script$engine.L:35(nashorn:engine/resources/engine.js:37)
at jdk.nashorn.internal.scripts.Script$\^eval\_.runScript(<eval>:1)
at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:535)
at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:209)
at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:378)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:568)
... 5 more
नमूना स्क्रिप्ट -scripting पैरामीटर (JDK के Jjs उपकरण के साथ) के साथ nashorn कमांड लाइन के साथ चलाया जाता है, सब ठीक है: लेकिन मैं इसके बजाय यह अपवाद है। यहाँ एक ही स्क्रिप्ट का परिणाम है:
Hey!
function print() { [native code] }
function readFully() { [native code] }
मैं एक readFully विधि को फिर से लिखने और स्क्रिप्ट संदर्भ के साथ यह बाँध सकता है, लेकिन मैं समझता हूँ कि क्यों यह काम नहीं करता है और पहले से निर्मित कार्यों का उपयोग पसंद करते हैं।
सादर
क्या JDK प्रयोग कर रहे हैं? ओरेकल या ओपनजेडीके? –
विंडोज 7 पर ऑर्केल जेडीके: जावा संस्करण "1.8.0_25", जावा (टीएम) एसई रनटाइम पर्यावरण (1.8.0_25-बी 18 बनाएं), जावा हॉटस्पॉट (टीएम) क्लाइंट वीएम (25.25-बी 022, मिश्रित मोड बनाएं) – Stratehm
ब्लॉग पोस्ट से जुड़ा हुआ पोस्ट फिर से है: openjdk। वे अभी भी थोड़ा अलग हैं। वास्तव में –