В этой статье описывается метод вызова сценариев Python в программах Java. Поделитесь этим для вашей ссылки, следующим образом:
В разработке программы иногда вам нужно вызывать связанные сценарии Python в программах Java. Следующий контент записывает шаги для начала и решения возможных проблем.
1. Создать новый проект Maven в Eclipse;
2. После добавления следующего пакета зависимостей в файл pom.xml, обновление Maven Project;
<dependency> <groupId>org.python</groupId> <artifactId>jython</artifactId> <version>2.7.0</version></dependency><dependency> <groupId>org.python</groupId> <artifactId>jython-standalone</artifactId> <version>2.7.0</version></dependency>
3. Напишите следующий тестовый код;
Import org.python.util.pythoninterpreter; public class jpythonscript {public static void main (string args []) {pythoninterpreter interpreter = new pythoninterpreter (); Interpreter.exec ("days = ('mod', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun');"); Interpreter.exec ("Дни печати [1];"); }}4. Тест:
Происходит следующая ошибка:
Консоль: не удалось установить '': java.nio.charset.unsupportedCharsetException: CP0.
Исключение в потоке "Main" Importerror: не может импортировать модуль сайта и его зависимости: без модуля с именем сайта
Определите, правильны ли следующие атрибуты:
* 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; import org.python.util.pythoninterpreter; открытый класс jpythonscript {public static void main (String args []) {Свойства props = new Properties (); 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, Reps, New String [0]); Pythoninterpreter interpreter = new pythoninterpreter (); Interpreter.exec ("days = ('mod', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun');"); Interpreter.exec ("Дни печати [1];"); }}6. Компиляция была успешной.
7. Ссылка на решение задач:
http://bugs.jython.org/issue2355
Дополнение: решение для броска ошибок jpython не может импортировать модуль сайта
Исключение в потоке "Main" Importerror: не может импортировать модуль сайта и его зависимости: без модуля с именем сайта
открытый класс jpythonscript {public static void main (string args []) {свойства props = new Properties (); props.put ("python.import.site", "false"); Свойства preprops = System.getProperties (); Pythoninterpreter.initialize (Preprops, Reps, New String [0]); Pythoninterpreter interpreter = new pythoninterpreter (); Interpreter.exec ("days = ('mod', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun');"); Interpreter.exec ("Дни печати [1];"); } // выполнять сложные карты обработки принятия класса <строка, объект> res = new Hashmap <String, Object> (); Res.put («1», «Danny»); Res.put ("2", "Fanny"); PythonInterpreter Interpm = new Pythoninterpreter (); Interpm. (Pyfunction) interpm.get ("main", pyfunction.class); map <pyobject, pyobject> tablem = new Hashmap <pyobject, pyobject> (); tablem.put (new Pystring ("conf -"), pyjavatype.wrapjavaobject (resering);Для получения дополнительного контента, связанного с Java, читатели, заинтересованные в этом сайте, могут просмотреть темы: «Учебное пособие по структуре данных Java и алгоритм», «Сводка операции Java Operation Dom Узел», «Краткое изложение Java File и Directory Commine» и «Советы по эксплуатации Java Cache»
Я надеюсь, что эта статья будет полезна для всех Java Programming.