본문 바로가기

Java

[Jython] Java에서 python 실행시키기

스프링 프로젝트에서 python으로 작성한 챗봇을 실행시키고자 한다.

Jython을 사용하면 Java에서도 python을 실행시킬 수 있다는 정보를 얻어 한번 시도를 해보았다.

 

build.gradle 파일에 dependency를 추가해주자.

https://www.jython.org/news.html

 

 

Downloads

The Python runtime on the JVM

www.jython.org

https://jython-devguide.readthedocs.io/en/latest/release_jy.html?highlight=build.gradle 

 

23. How To Release Jython — Jython Developer's Guide

23. How To Release Jython These are the steps needed to make a public release of Jython. In the case of a public release, you can only do this once the hard work of development and debugging is done, and there is a consensus in the project that adequate qu

jython-devguide.readthedocs.io

이 글을 작성하는 시점을 기준으로 최신 버전이 2.7.3 이라고 하니 최신 버전으로 추가해주자.

implementation 'org.python:jython-slim:2.7.3rc1' //jython

우선 테스트를 위해 간단한 python코드를 작성하고 Jython을 이용해 실행시켜보았다.

 

 

 

pyTest.py

print('jython test')
print('good')

JythonTest.java

import org.python.util.PythonInterpreter;

public class JythonTest {
    private static PythonInterpreter interpreter;
    public static void main(String[] args) {

        interpreter = new PythonInterpreter();
        interpreter.execfile("src/main/java/chat/crawling/bot/pyTest.py");
        interpreter.exec("");
    }
}

 

결과창

 

pyTest2.py 

def Sum(a , b):
    return a+b

JythonTest.java

package chat.crawling;

import org.python.core.PyObject;
import org.python.util.PythonInterpreter;

public class JythonTest {

    private static PythonInterpreter interpreter;

    public static void main(String[] args) {

        interpreter = new PythonInterpreter();
        interpreter.execfile("src/main/java/chat/crawling/bot/pyTest2.py");
        interpreter.exec("result = Sum(5, 10)");

        PyObject result = interpreter.get("result");
        System.out.println(result);
    }
}

결과창

 

정상작동함을 확인할 수 있었다.