파이썬 스크립트는 자바를 호출

 

개발 과정에서 필요 가끔 자바 파이썬 스크립트를 호출 할 때, 결국, 파이썬은 파충류, 과학 컴퓨팅 등의 분야에서 자연 장점이 발생 사용할 수 있습니다. 최근 직장에서 만났다는 자바 프로그램에서 기록 된 파이썬 프로그램을 호출, 그래서 약간의 녹화를 할 필요가있다.

자바 파이썬 스크립트를 호출하기 위해 1 개 개의 일반적인 방법

일반적으로는 다음 두 가지에 의해 호출 :

• 라이브러리를 제공함으로써 달성된다 자이 썬을 호출하여 jython.jar를

• 직접 자바 런타임, 런타임 클래스 Runtime.getRuntime () 프로세스를 열 파이썬 스크립트 파일을 실행을 통해

자이 썬이 구현 호출

자이 썬 소개

자이 썬 홈 페이지 : HTTP : //www.jython.org/

자이 썬은 자바 플랫폼, 자연의 구현에 파이썬 언어, 자이 썬은 JVM 파이썬 언어에 구현 된 자바로 작성된 것입니다. 따라서 자바에서 직접 파이썬 자이 썬를 호출 할 수 있습니다.

자이 썬 설치

자이 썬을 설치하기 전에 지역 JDK가 이미 설치되어 있는지 확인해야합니다.

1. 자이 썬 버전 설치 및 C와 같은 특정 디렉토리에 두 개의 분리 된 독립 항아리 jar 파일 해당 설치 파일을 다운로드 공식 웹 사이트 : jython2.7.0을;

2. "물론 당신이 직접 디렉토리를 설치하려면 해당 jar 파일을 두 번 클릭하여 입력 할 수 있습니다", 자바는 -jar jython_installer_2.7.0.jar 실행 위치한 자이 썬 jar 파일의 설치를 위해 현재 디렉토리로 전환, 터미널로 이동;

3. 각각 CLASSPATH 및 경로에 항아리, lib 디렉토리를 해당 구성에 해당하는 환경 변수 :

-C : jython2.7.0jython.jar은 상기 CLASSPATH에 첨가

-C : jython2.7.0; C : jython2.7.0Lib는 상기 경로에 첨가

설치가 성공하면, 그것은 파이썬 명령을 실행하고 파이썬과 환경과 상호 작용할 수, 자이 썬 대화 형 환경으로 들어갑니다 터미널의 자이 썬에서 명령을 실행합니다. 그러나 당신은 또한 자이 썬 xxx.py 명령으로 파이썬 스크립트 파일을 실행할 수 있습니다.

자이 썬 파이썬 스크립트 실행

  • 파이썬 문은 직접 자바에 포함

덜 사용은 직접 자바에서 파이썬 문을 내장, 특히 의미가 없습니다.

수입 org.python.util.PythonInterpreter;

공용 클래스 홈페이지 {

공공 정적 무효 메인 (문자열 []에 args) {

PythonInterpreter을 인터프리터 = 새 PythonInterpreter을 ();

// 파이썬 문을 실행할

interpreter.exec ( "수입 SYS");

interpreter.exec ( "인쇄 '안녕하세요'");

interpreter.exec ( "인쇄 2 ** 100");

}

}

  • 파이썬 스크립트의 자바 구현에 좋은 xxx.py 선정됐다

프로그램의 실행 중에 필요에 따라 직접 작성 파이썬 스크립트를 통해 자이 썬 패킷 전화는 대략 다음과 같은 경우로 나눌 수 있습니다 :

1. 자바 프로그램에서 파이썬 스크립트에 매개 변수를 전달해야 할 필요성이 반환 값 라인 파이썬 스크립트를 취득 할 필요가 없습니다, 스크립트가 직접 파일 스트림에 의해 개설하고, 자이 썬 인터프리터를 사용하여 실행 할 수있다.

수입 org.python.util.PythonInterpreter;

수입는 java.io *;

공용 클래스 홈페이지 {

공공 정적 무효 메인 (문자열 []에 args) {

PythonInterpreter을 인터프리터 = 새 PythonInterpreter을 ();

파이썬 스크립트 파일을 실행 //

{시도

filepy의 InputStream = FileInputStream에 새로운 ( "C : xxx.py");

interpreter.execfile (filepy);

filepy.close ();

} 캐치 (예외 전자) {

e.printStackTrace ();

}

}

}

또한 2. 전화 파이썬 자바 프로그램, 그리고 반환 값을받은 매개 변수를 전달해야합니다. 파이썬 프로그램이 메소드를 호출, 하나 직접 파이썬 함수를 작성라고, 2 분할하고, 다른 함수 호출 파이썬 스크립트 클래스를 할 수 있습니다.

- 직접 통화 기능, PyFunction에 의해 달성 된 매개 변수를 전달하고 반환 값을 얻을

org.python.core을 가져옵니다. *;

수입 org.python.util.PythonInterpreter;

공용 클래스 홈페이지 {

공공 정적 무효 메인 (문자열 []에 args) {

PythonInterpreter을 새로운 인터 = PythonInterpreter을 ();

// 파일 경로 파이썬 기능을 지정

문자열 pythonFunc = "D : test.py";

inter.execfile (pythonFunc);

// 기능 테스트의 이름을 가져옵니다

PyFunction pyf inter.get = ( "테스트"PyFunction.class);

// 통과 함수의 매개 변수 및 결과의 취득을 반환

입술의 PyObject = pyf .__ __ 호 (Py.newInteger (2) Py.newInteger (3));

System.out.print (해상도);

inter.cleanup ();

inter.close ();

}

}

- 매개 변수를 전달하고 반환 값 인하를 수신, 예의 PyObject 파이썬 개체, 파이썬 객체 메소드 호출의 방법을 사용하여, 자바, 파이썬 객체 인스턴스라고합니다.

org.python.core을 가져옵니다. *;

수입 org.python.util.PythonInterpreter;

공용 클래스 홈페이지 {

공공 정적 무효 메인 (문자열 []에 args) {

PythonInterpreter을 새로운 인터 = PythonInterpreter을 ();

// 파이썬 클래스 경로

문자열 pythonClass = "D : test_class.py";

// 파이썬 개체 이름

문자열 pythonObjName = "CAL";

// 파이썬 클래스 이름

문자열 pythonClazzName = "계산기";

inter.execfile (pythonClass);

// 객체 파이썬의 인스턴스

inter.exec (PythonObjName + "="+ pythonClazzName + "()");

// 파이썬 객체 인스턴스화하기

의 PyObject의 PyObject = inter.get (pythonObjName);

// 파이썬 객체 메소드 호출 인수를 전달하고 수신 된 값을 반환

입술의 PyObject = pyObject.invoke ( "파워", 새의 PyObject [{Py.newInteger (2) Py.newInteger (3)});

이중 전력 Py.py2double = (해상도);

System.out.print (전력);

inter.cleanup ();

inter.close ();

}

}

다음과 같이 그 중 test_class.py 파일의 내용은 다음과 같습니다

수입 수학

클래스 계산기 (객체) :

DEF 전력 (X, Y) :

리턴 math.pow (X, Y)

  • Runtime.getRuntime (). Exec에서 구현 호출 ()

런타임 클래스는 현재의 JVM 런타임 환경을 얻을 수 있습니다 Runtime.getRuntime ()로 자바 JVM 런타임 환경과 관련 클래스입니다. 런타임 대부분의 방법은 실행시에 호출되는 각 getRuntime () 메소드 중에 표기 인스턴스 메소드이다. 방법을 수행하는 파이썬 스크립트를 사용하여 런타임 클래스는 직접 명령을 실행할 수있는 현재의 플랫폼에서 파이썬 스크립트로, 매우 간단하고 원유이다. 외부 명령을 실행하거나 창에 cmd를 같은 플랫폼 쉘, 리눅스, 유닉스, 맥 OS의 아래에있는 쉘을 완료 한 간부 런타임 기본 클래스 () 메서드 호출을 사용하여 자바.

파이썬 스크립트에 의해 런타임 실행, 스크립트에 매개 변수를 전달하고 명령에서 직접 파이썬 스크립트의 출력을 얻을.

공용 클래스 홈페이지 {

공공 정적 무효 메인 (문자열 []에 args) {

문자열에 cmd = "파이썬 xxx.py argv1 argv2 ...";

. 프로세스 PROC = Runtime.getRuntime () 간부 (cmd를)

이 proc.getInputStream의 InputStream = ()이고;

DIS의 DataInputStream = 새의 DataInputStream는 (IS);

문자열 STR = dis.readLine ();

proc.waitFor ();

에서 System.out.println (STR);

}

}

3 요약

위의 두 가지 방법이 자바 프로그램에서 호출 파이썬 스크립트를 달성 할 수 있지만, 덜 효율적 자이 썬 전화를 사용할 때, 더 많은 자원을 소비하고 스크립트 파이썬 타사 종속성 자이 썬에 필요한라고 요구하는 경우 것 타사 패키지를 설치합니다. 플랫폼에 의존 스크립트를 사용하여 실행되는 동안 런타임 호출은, 한 현재 타사 플랫폼은 해당 종속성을 설치로, 스크립트가 성공적으로 실행 실행의 효율성과 파이썬 스크립트의 실행을 지시하고 차이가 없습니다 수 있습니다.

물론, 프로그램에서 프로그램의 복잡성의 결합을 증가, 프로그램의 효율성을 줄일 중첩 호출을 계속, 향후 확장이 편리하지, 그래서 자주 사용하는 것이 좋습니다하지 않으며, 해당 마이크로 서비스에 의해 해결 간주 될 수 있습니다 질문입니다.

많은 단점이있는 기사는, 우리는 더 교류, 전시회를 바랍니다.

참조 링크

1. 다섯 JVM 기반의 스크립트 언어 https://coolshell.cn/articles/2631.html

파이썬 전화 2.Java http://tonl.iteye.com/blog/1918245

사용 3.Java Runtime.exec의 ()의 https://blog.csdn.net/toneylyx/article/details/52623597

4.Why가 많은 비단뱀입니다 https://www.oschina.net/translate/why-are-there-so-many-pythons

5.Jython www.jython.org

추천

출처www.cnblogs.com/zhigu/p/10935182.html