تصف هذه المقالة طريقة استدعاء البرامج النصية Python في برامج Java. شاركه للرجوع إليه ، على النحو التالي:
في تطوير البرنامج ، تحتاج أحيانًا إلى استدعاء البرامج النصية ذات الصلة Python في برامج Java. يسجل المحتوى التالي خطوات البدء والحلول للمشاكل المحتملة.
1. إنشاء مشروع Maven جديد في Eclipse ؛
2. بعد إضافة حزمة التبعية التالية إلى ملف pom.xml ، قم بتحديث مشروع Maven ؛
<Rependency> <roupency> org.python </rougiD> <StifactId> jython </stifactid> <الإصدار> 2.7.0 </version> </sependency> <sependency>
3. اكتب رمز الاختبار التالي ؛
استيراد org.python.util.pythoninterpreter ؛ الطبقة العامة jpythonscript {public static void main (string args []) {pythoninterpreter teansreter = new pythoninterpreter () ؛ textreter.exec ("days = ('mod' ، 'Tue' ، 'Wed' ، 'Thu' ، 'Fri' ، 'Sat' ، 'Sun') ؛") ؛ المترجمة المترجمة. EXEC ("أيام الطباعة [1] ؛") ؛ }}4. الاختبار:
يحدث الخطأ التالي:
وحدة التحكم: فشل في تثبيت '': java.nio.charset.unsupportedcharsetexception: cp0.
الاستثناء في مؤشر ترابط "Main" المستورد: لا يمكن استيراد وحدة الموقع وتبعياتها: لا توجد وحدة مسماة الموقع
حدد ما إذا كانت السمات التالية صحيحة:
* sys.path: ['... python // jython // 2.7.0 // lib' ، '__classpath__' ، '__pyclasspath __/']
قد تكون هذه السمة تشمل الدلائل الخاطئة ، مثل من Cpython
*sys.prefix: ***/jython/2.7.0
يتم تعيين هذه السمة بواسطة خاصية النظام python.home ، على الرغم من أنها تستطيع
غالبًا ما يتم تحديدها تلقائيًا من خلال موقع ملف Jython Jar
يمكنك استخدام خيار -S أو python.import.site = false لعدم استيراد وحدة الموقع
5. حل المشكلات:
رمز إعادة النية كما يلي:
استيراد java.util.properties ؛ استيراد org.python.util.pythoninterpreter ؛ الفئة العامة jpythonscript {public static void main (String args []) {properties props = new properties () ؛ props.put ("python.home" ، "Path to the Lib Folder") ؛ props.put ("python.console.encoding" ، "UTF-8") ؛ props.put ("python.security.respectjavaactibility" ، "false") ؛ props.put ("python.import.site" ، "false") ؛ خصائص preprops = system.getProperties () ؛ pythoninterpreter.initialize (preprops ، الدعائم ، سلسلة جديدة [0]) ؛ Pythoninterpreter مترجم = pythoninterpreter جديد () ؛ textreter.exec ("days = ('mod' ، 'Tue' ، 'Wed' ، 'Thu' ، 'Fri' ، 'Sat' ، 'Sun') ؛") ؛ المترجمة المترجمة. EXEC ("أيام الطباعة [1] ؛") ؛ }}6. التجميع كان ناجحا.
7. المرجع لحل المشاكل:
http://bugs.jython.org/issue2355
الملحق: حل لمخطأ jpython لا يمكن استيراد وحدة الموقع
الاستثناء في مؤشر ترابط "Main" المستورد: لا يمكن استيراد وحدة الموقع وتبعياتها: لا توجد وحدة مسماة الموقع
الفئة العامة jpythonscript {public static void main (String args []) {properties props = new properties () ؛ props.put ("python.import.site" ، "false") ؛ خصائص preprops = system.getProperties () ؛ pythoninterpreter.initialize (preprops ، الدعائم ، سلسلة جديدة [0]) ؛ Pythoninterpreter مترجم = pythoninterpreter جديد () ؛ textreter.exec ("days = ('mod' ، 'Tue' ، 'Wed' ، 'Thu' ، 'Fri' ، 'Sat' ، 'Sun') ؛") ؛ المترجمة المترجمة. EXEC ("أيام الطباعة [1] ؛") ؛ } // تنفيذ خريطة معالجة قبول الفئة المعقدة <string ، object> res = new hashmap <string ، object> () ؛ res.put ("1" ، "danny") ؛ res.put ("2" ، "fanny") ؛ pythoninterpreter interpm = new pythoninterpreter () ؛ interpm.execfile (. (pyfunction) interpm.get ("main" ، pyfunction.class) ؛ خريطة <pyobject ، pyobject> tablem = new hashmap <pyobject ، pyobject> () ؛ tablem.put (pydtring ("conf" ، pyjavatype.wrapjavaoBjectلمزيد من المحتوى المتعلق بـ Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص Tips Java Operation DOM" ، "ملخص ملف Java ونصائح تشغيل الدليل" و "ملخص نصائح Java Cache Operation Tips"
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.