이 기사에서는 Java 프로그램에서 Python 스크립트를 호출하는 방법에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
프로그램 개발에서 때때로 Java 프로그램에서 관련 파이썬 스크립트를 호출해야합니다. 다음 컨텐츠는 시작하는 단계와 가능한 문제에 대한 해결책을 기록합니다.
1. Eclipse에서 새로운 Maven 프로젝트를 만듭니다.
2. POM.XML 파일에 다음 종속성 패키지를 추가 한 후 Maven 프로젝트를 업데이트하십시오.
<pectionency> <groupid> org.python </groupid> <artifactid> jython </artifactid> <bersion> 2.7.0 </version> </fectionency> <pectionement> <groupid> org.python </groupid> <artifactid> jython-standalone </artifactid> <bersion> </decendency>
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. 문제 해결 :
리팩토링 코드는 다음과 같습니다.
import java.util.properties; import org.python.util.pythoninterpreter; public class jpythonscript {public static void main (String args []) {properties propss = 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, props, new String [0]); PythonInterpreter 통역 = 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 : 사이트 모듈 및 그 종속성을 가져올 수 없습니다.
public class jpythonscript {public static void main (String args []) {properties props = new Properties (); props.put ( "python.import.site", "false"); 속성 preprops = system.getProperties (); pythoninterpreter.initialize (preprops, props, new String [0]); PythonInterpreter 통역 = 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.execfile ( "./ src/com/datadeal.py"); (pyfunction) interpm.get ( "main", pyfunction.class); map <pyobject, pyobject> tablem = new Hashmap <pyobject, pyobject> (); tablem.put ( "conf"), pyjavatype.wrapjavaobject (pydictary pydmear (res));
더 많은 Java 관련 컨텐츠를 보려면이 사이트에 관심이있는 독자는 "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약 및"Java Cache Cache Operation Tips "의 주제를 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.