Artikel ini menjelaskan metode memanggil skrip Python dalam program Java. Bagikan untuk referensi Anda, sebagai berikut:
Dalam pengembangan program, kadang -kadang Anda perlu memanggil skrip Python terkait dalam program Java. Konten berikut mencatat langkah -langkah untuk memulai dan solusi untuk masalah yang mungkin.
1. Buat proyek Maven baru di Eclipse;
2. Setelah menambahkan paket ketergantungan berikut ke file pom.xml, perbarui proyek Maven;
<dependency> <GroupId> org.python </groupid> <ArtifactId> Jython </artifactid> <version> 2.7.0 </version> </dependency> <dependency> <groupid> org.python </groupid> <ArTifactid> Jython-standalon </artifactid> </Artifactid> <Tandalon> <Tandalon> <Tandalon> <Tandalon> <Tandalon> <Tandalon> </ArtiFacTid> <Tandalon> </Artandalon> </ArtiFacTid
3. Tulis kode uji berikut;
impor org.python.util.pythoninterpreter; kelas publik jpythonscript {public static void main (string args []) {pythonintreter interpreter = new pythoninterpreter (); interpreter.exec ("days = ('mod', 'tue', 'wed', 'thu', 'fri', 'Sat', 'sun');"); interpreter.exec ("cetak hari [1];"); }}4. Tes:
Kesalahan berikut terjadi:
Konsol: Gagal menginstal '': java.nio.charset.unsupportedcharsetException: cp0.
Pengecualian di Thread "Utama" Importir: Tidak Dapat Mengimpor Modul Situs dan Ketergantungannya: Tidak Ada Situs Bernama Modul
Tentukan apakah atribut berikut benar:
* sys.path: ['... python // jython // 2.7.0 // lib', '__classpath__', '__pyclasspath __/']
Atribut ini mungkin termasuk direktori yang salah, seperti dari cpython
*Sys.Prefix: ***/Jython/2.7.0
Atribut ini ditetapkan oleh properti sistem python.home, meskipun bisa
sering secara otomatis ditentukan oleh lokasi file jar jython
Anda dapat menggunakan opsi -s atau python.import.site = false untuk tidak mengimpor modul situs
5. Pemecahan masalah:
Kode refactoring adalah sebagai berikut:
impor java.util.properties; impor org.python.util.pythonintreter; kelas publik jpythonscript {public static void main (string args []) {properties props = new properties (); props.put ("python.home", "jalur ke folder lib"); props.put ("python.console.encoding", "UTF-8"); props.put ("Python.security.RespectJavaAccessibility", "false"); props.put ("python.import.site", "false"); Properti preprops = system.getProperties (); Pythonintreter.initialize (preprops, alat peraga, string baru [0]); Pythoninterpreter Interpreter = Pythoninterpreter baru (); interpreter.exec ("days = ('mod', 'tue', 'wed', 'thu', 'fri', 'Sat', 'sun');"); interpreter.exec ("cetak hari [1];"); }}6. Kompilasi berhasil.
7. Referensi untuk menyelesaikan masalah:
http://bugs.jython.org/issue2355
Suplemen: Solusi untuk Melempar Kesalahan JPython Tidak Dapat Mengimpor Modul Situs
Pengecualian di Thread "Utama" Importir: Tidak Dapat Mengimpor Modul Situs dan Ketergantungannya: Tidak Ada Situs Bernama Modul
kelas publik jpythonscript {public static void main (string args []) {properties props = new properties (); props.put ("python.import.site", "false"); Properti preprops = system.getProperties (); Pythonintreter.initialize (preprops, alat peraga, string baru [0]); Pythoninterpreter Interpreter = Pythoninterpreter baru (); interpreter.exec ("days = ('mod', 'tue', 'wed', 'thu', 'fri', 'Sat', 'sun');"); interpreter.exec ("cetak hari [1];"); } // Lakukan Peta Pemrosesan Penerimaan Kelas Kompleks <String, Object> res = new HashMap <String, Object> (); res.put ("1", "Danny"); res.put ("2", "fanny"); pythonintreter interpm = pythonintreter baru (); interpm.execfile ("/src/src/com (); interpm.execfile (". (Pyfunction) interpm.get ("main", pyfunction.class); peta <pyobject, pyobject> tablem = hashmap baru <pyobject, pyobject> (); tablem.put (pystring baru ("conf"), pyjavatype.wrapjavaObject (rese);Untuk konten yang lebih terkait dengan Java, pembaca yang tertarik dengan situs ini dapat melihat topik: "Tutorial Struktur Data Java dan Algoritma", "Ringkasan Java Operation Dom Node Tips", "Ringkasan Tips Operasi Java File dan Direktori" dan "Ringkasan Java Cache Tips"
Saya harap artikel ini akan membantu pemrograman Java semua orang.