استدعاء جافا سكريبت مترجم من برنامج نصي
-
10-07-2019 - |
سؤال
ولقد كتبت بعض النصوص في جافا سكريبت تحت الكركدن 1.7، واحد منهم يبدأ المتشعب الخادم الحد الأدنى وتقبل أوامر JS في الإدخال.
والآن، إذا أسميه (من داخل الكركدن):
engine = ScriptEngineManager().getEngineByName("JavaScript");
وأحصل على محرك مدمج JS (من جاوة 1.6)، وهذا هو نسخة قديمة من وحيد القرن، ويفتقر إلى بعض الوظائف (مثل ل JavaAdapter لواجهات متعددة).
وكيف يمكنني الحصول على محرك وحيد القرن بدلا من ذلك؟ هل أنا بحاجة ScriptEngineManager.getEngineFactories () أو ماذا؟
المحلول 2
ولقد وجدت بها نفسي (التجربة والخطأ). كما ذكر أعلاه، الكركدن لا تسجيل مصنع المحرك. يمكنك الحصول على محرك الحالي (كسياق وكائن النصية):
cx = Context.getCurrentContext();
scope = new ImporterTopLevel(cx);
ومع هذه الكائنات، لا أستطيع تشغيل كتاباتي أو خطوط الأوامر باستخدام evalString / evalReader.
نصائح أخرى
وماذا تريد تحقيقه هو تحديد إصدار معين من محرك السيناريو الذي ينفذ "جافا سكريبت". الطريقة الصحيحة لذلك هي دعوة ScriptEngineManager.getEngineFactories()
ومن ثم تحقق من نتائج getLanguageName()
وgetEngineVersion()
.
وقبل استدعاء النصي الأولي الخاص بك، لماذا لا يتم تعيين محرك كنت تستخدم كمتغير السياق داخل النص؟ وبهذه الطريقة، داخل السيناريو، سيكون لديك الوصول إلى محرك يعمل بنظام التشغيل ذلك.