محرك البرمجة النصية Java يستورد فصولي لا يعمل
-
01-10-2019 - |
سؤال
الرمز يستحق 1000 كلمة لشرح ذلك :-)
package jasim;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class JSTest {
public static void main(String[] args) throws ScriptException {
ScriptEngine jse = new ScriptEngineManager().getEngineByExtension("js");
jse.eval("println(new jasim.JSTest().toString)");
}
@Override
public String toString() {
return "JSTest Object";
}
}
سوف يفشل هذا الرمز مع الاستثناء أدناه:
Exception in thread "main" javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "jasim" is not defined. (<Unknown source>#1) in <Unknown source> at line number 1
كيف يمكنني استيراد فصولي إلى scriptengine؟
المحلول
بعد النظر في موزيلا وحيد القرن مستندات, ، الحل إما للاستخدام:
importPackage(Packages.jasim)
داخل البرنامج النصي ، أو للاستخدام new Packages.jasim.JSTest()
هذا ليس واضحًا في مستندات Sun فيما يتعلق بـ ImportPackage في مستندات البرمجة النصية.
نصائح أخرى
بنفس الطريقة التي تستورد بها javax.script.ScriptEngine;
...
فقط تأكد من أن فصولك في ClassPath
لا تنتمي إلى StackOverflow