บทความนี้อธิบายวิธีการใช้งาน Java ของการเรียก Jython เพื่อเรียกใช้ไฟล์ Python แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
ในระหว่างการพัฒนาเว็บคุณมักจะใช้ห้องสมุดบุคคลที่สามในสภาพแวดล้อมท้องถิ่นในสภาพแวดล้อมเว็บ บทความนี้อธิบายว่า Java ดำเนินการไฟล์ Python อย่างไร
มีการกล่าวออนไลน์ว่ามีสามวิธี แต่ในความเป็นจริงมีเพียงสองวิธีเท่านั้น วิธีที่สองมีการแนะนำด้านล่าง (Jython)
วิธีที่ 1
java.lang.runtime runtime rt = runtime.getruntime (); ลอง {process proc = rt.exec ("python /tmp/test.py"); } catch (exception e) {e.printstacktrace (); -นี่คือแนวคิดย่อย:
1. Runtime.getRuntime() สามารถรับสภาพแวดล้อมรันไทม์ของ JVM ปัจจุบันซึ่งเป็นวิธีเดียวใน Java ที่จะได้รับสภาพแวดล้อมรันไทม์
2. วิธีการอื่น ๆ ส่วนใหญ่ในรันไทม์เป็นวิธีการอินสแตนซ์ซึ่งหมายความว่าจะต้องใช้วิธีการ getRuntime ทุกครั้งที่มีการโทรหารันไทม์
3. วิธีการออกในรันไทม์เป็นวิธีการออกจาก JVM ปัจจุบันซึ่งอาจเป็นวิธีเดียว เพราะฉันเห็นการออกในคลาสระบบออกจาก JVM โดยการโทรหา Runtime.exit() ที่นี่ฉันจะอธิบายกฎทั่วไปของ Java สำหรับค่าส่งคืนของรันไทม์ (กล่าวถึงในภายหลัง) 0 หมายถึงทางออกปกติและไม่ใช่ 0 แสดงถึงการทำแท้งที่ผิดปกติ นี่เป็นเพียงกฎ Java จะมีความสับสนเล็กน้อยในแต่ละระบบปฏิบัติการ
ประเภทที่สอง (จุดสำคัญ)
เรียก Jython API
ขั้นตอนที่ 1: เพิ่มการพึ่งพา
<!-https://mvnrepository.com/artifact/org.python/jython-> <การพึ่งพา> <GroupId> org.python </groupId>
ขั้นตอนที่ 2: สร้างคลาสทดสอบใหม่ Java
นำเข้า org.python.util.pythoninterpreter; นำเข้า java.util.properties;/** * ผู้แต่ง: พบกับ Xiaoxing * อีเมล: [email protected] * วันที่: 17-3-21 * เวลา: 8:18 PM * อธิบาย Pythoninterpreter (); Interpreter.exec ("Days = ('mod', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');"); interpreter.exec ("วันพิมพ์ [1];"); Interpreter.execFile ("/tmp/test.py"); interpreter.exec ("พิมพ์ 'สร้างโดย tengxing เมื่อ 2017.3'"); -
ขั้นตอนที่ 3: เรียกใช้ test.java
การทดสอบเริ่มต้นเวลา 21:40 น. ... Tuethis เป็นการทดสอบโดย Tengxing ในปี 2017.3!
กระบวนการสิ้นสุดลงรหัสออก 0
การแจ้งเตือนอาจรายงานข้อยกเว้นดังต่อไปนี้:
ข้อยกเว้นในเธรด "หลัก" ผู้นำเข้า: ไม่สามารถนำเข้าโมดูลไซต์และการพึ่งพาได้: ไม่มีโมดูลชื่อไซต์
ตรวจสอบว่าแอตทริบิวต์ต่อไปนี้ถูกต้อง:
เหตุผล: python.import.site ไม่ได้เริ่มต้น
แก้ปัญหา:
การทดสอบระดับสาธารณะ {โมฆะคงที่สาธารณะหลัก (String [] args) {properties props = คุณสมบัติใหม่ (); props.put ("python.home", "เส้นทางไปยังโฟลเดอร์ lib"); props.put ("python.console.encoding", "UTF-8"); props.put ("python.security.respectjavaaccessibility", "false"); props.put ("python.import.site", "false"); คุณสมบัติ preprops = system.getProperties (); Pythoninterpreter.initialize (preprops, อุปกรณ์ประกอบฉาก, สตริงใหม่ [0]); PythonInterpreter Interpreter = new PythonInterpreter (); Interpreter.exec ("Days = ('mod', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');"); interpreter.exec ("วันพิมพ์ [1];"); Interpreter.execFile ("/tmp/test.py"); interpreter.exec ("พิมพ์ 'สร้างโดย tengxing เมื่อ 2017.3!'"); -ตกลงสมบูรณ์แบบ
// เรียกวิธีการใน Python และพิมพ์ผลลัพธ์ pyfunction func = (pyfunction) interpreter.get ("adder", pyfunction.class); int a = 2010, b = 2; pyobject pyobj = func. pyobj.toString ());บทความอ้างอิง:
//www.vevb.com/article/137380.htm
//www.vevb.com/article/137385.htm
สิ่งที่แนบมา: jython.jar คลิกที่นี่ เพื่อดาวน์โหลดเว็บไซต์นี้
สำหรับเนื้อหาที่เกี่ยวข้องกับ Java เพิ่มเติมผู้อ่านที่สนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินการ Java Dom Node", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน