2012-06-16 3 views
6

이미 실행중인 Java jar에 포함 된 특정 메소드 및 메소드를 호출 할 수 있기를 원합니다. 나는 자이 썬과 같은 것들을 발견했다. 그러나 그것들은 오직 자바의 원시 클래스에 접근 할 수있을 것 같다.Python에서 비원시 Java 코드 호출

+0

어떻게 예에서이 작업을 수행 할 수있을 것으로 예상 할 Java? –

답변

3

체크 아웃이 :. Calling Java from Python

"당신은 또한 프론트 페이지 문서의 많은에 대한 예제가있다 Py4J를 사용할 수 있지만 기본적으로, 당신은 당신의 파이썬 코드에서 자바 메소드를 호출을 마치 그들이 있었다 파이썬 방법 :

from py4j.java_gateway import JavaGateway 

게이트웨이 = JavaGatew AY() #는 JVM에 연결

JAVA_OBJECT gateway.jvm.mypackage.MyClass =()의 호출 # 생성자

other_object java_object.doThat =()

other_object.doThis (1 'ABC')

gateway.jvm.java.lang.System.out.println ('안녕하세요!') # 호출 정적 메서드

자이 썬과 달리 Py4J의 한 부분은 Python VM에서 실행되므로 최신 버전의 Python에서는 항상 "최신"이고 자이 썬에서 제대로 실행되지 않는 라이브러리 (예 : lxml)를 사용할 수 있습니다. 다른 부분은 호출하려는 Java VM에서 실행됩니다.

통신 대신 JNI의 소켓을 통해 수행되며 Py4J 자체 프로토콜 (등, 메모리를 관리하기 위해, 특별한 경우를 최적화하는)이 "

+2

Py4J 웹 사이트 : "위의 Python 코드를 실행하기 전에 Java 프로그램을 시작해야합니다. 즉, Py4J는 JVM을 시작하지 않습니다. "---- http://py4j.sourceforge.net/index.html에서 웹 사이트로 이동하십시오. – tabchas

관련 문제