Este artigo descreve o método de chamar scripts Python nos programas Java. Compartilhe -o para sua referência, como segue:
No desenvolvimento do programa, às vezes você precisa ligar para scripts Python relacionados nos programas Java. O conteúdo a seguir registra as etapas para começar e soluções para possíveis problemas.
1. Crie um novo projeto Maven no Eclipse;
2. Depois de adicionar o seguinte pacote de dependência ao arquivo pom.xml, atualize o projeto Maven;
<Depencency> <Puerpyid> org.python </frugiD> <stifactId> jython </sutifactId> <versão> 2.7.0 </version> </dependency> <pendency> <pursiciD> org.python </groupid> <stifactid> jyton-standalone </stifactid> <versão> 2,7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.7.
3. Escreva o seguinte código de teste;
importar org.python.util.pythoninterpreter; classe pública jpythoScript {public static void main (string args []) {pythoninterpreter intérprete = new PythonInterPreter (); Interpreter.exec ("Days = ('mod', 'Ter', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');"); interpreter.exec ("Dias de impressão [1];"); }}4. Teste:
O seguinte erro ocorre:
Console: Falha ao instalar '': java.nio.charset.unsupportDcharseTexception: cp0.
Exceção no Thread "Main" Importror: não é possível importar o módulo do site e suas dependências: nenhum módulo nomeado site
Determine se os seguintes atributos estão corretos:
* sys.path: ['... Python // jython // 2.7.0 // lib', '__classpath__', '__pyclasspath __/']
Este atributo pode estar incluindo os diretórios errados, como do cpython
*sys.prefix: ***/jython/2.7.0
Este atributo é definido pela propriedade do sistema python.home, embora possa
ser frequentemente determinado automaticamente pela localização do arquivo jython jar
Você pode usar a opção -s ou python.import.site = false para não importar o módulo do site
5. Resolução de problemas:
O código de refatoramento é o seguinte:
importar java.util.properties; importar org.python.util.pythoninterpreter; classe pública jpythoScript {public static void main (string args []) {Propriedades Props = new Properties (); props.put ("python.home", "caminho para a pasta lib"); props.put ("python.console.encoding", "utf-8"); props.put ("python.security.respepjavaaccessibilidade", "false"); props.put ("python.import.site", "false"); Propriedades preprop = System.getProperties (); Pythoninterpreter.initialize (pré -props, adereços, nova string [0]); Interpretador PythonInterpreter = new PythonInterpreter (); Interpreter.exec ("Days = ('mod', 'Ter', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');"); interpreter.exec ("Dias de impressão [1];"); }}6. A compilação foi bem -sucedida.
7. Referência para resolver problemas:
http://bugs.jython.org/issue2355
Suplemento: Solução para Jpython Erro O lançamento não pode importar o módulo do site
Exceção no Thread "Main" Importror: não é possível importar o módulo do site e suas dependências: nenhum módulo nomeado site
classe pública jpythoScript {public static void main (string args []) {Properties props = new Properties (); props.put ("python.import.site", "false"); Propriedades preprop = System.getProperties (); Pythoninterpreter.initialize (pré -props, adereços, nova string [0]); Interpretador PythonInterpreter = new PythonInterpreter (); Interpreter.exec ("Days = ('mod', 'Ter', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');"); interpreter.exec ("Dias de impressão [1];"); } // executa o mapa de processamento de aceitação de classe complexa <string, object> res = new Hashmap <string, object> (); res.put ("1", "Danny"); res.put ("2", "fanny"); pythoninterpreter interpm = new PythoninterPreter (); interpm.execfile (".. (Pyfunção) interpm.get ("main", pyfunction.class); mapa <pyobject, pyobject> theblem = new hashmap <pyobject, pyobject> (); theblem.put (novo pystring ("conftigy), pyjavatype.Para mais conteúdo relacionado ao Java, os leitores interessados neste site podem visualizar os tópicos: "Estrutura de dados Java e tutorial de algoritmo", "Resumo da operação Java Dom Node Tips", "Resumo de Dicas de Operação de Arquivos e Diretórios de Java" e "Resumo das dicas de operação do Java Cache"
Espero que este artigo seja útil para a programação Java de todos.