2016-08-03 2 views
0

GUI 용 Java와 백엔드 용 Python을 사용하여 Java 및 Python을 사용하는 프로젝트 작업을하고 있습니다.Java jar 파일에서 python 스크립트 호출하기

Runtime r = Runtime.getRuntime(); 
String pyScript = "resources/script.py"; 
String scriptPath = getClass().getResource(pyScript).toExternalForm(); 
// Strip "file/" from path 
scriptPath = scriptPath.substring(scriptPath.indexOf("/") + 1); 
Process p = r.exec("python " + scriptPath) 

파이썬 스크립트는 자바 프로젝트의 src 폴더에 자원라는 폴더에 있습니다 자바 프로그램은 버튼이 다음 코드를 사용하여 누를 때 파이썬 스크립트 호출합니다. 이 코드는 IDE (IntelliJ)에서 프로그램을 실행할 때 작동하지만 .jar 파일을 만들고 스크립트를 실행하려고하면 아무 일도 일어나지 않습니다. 프로그램이 여전히 .jar 파일 내에서 스크립트를 찾는다는 것을 확인할 수 있습니다. 스크립트를 실행하려면 어떻게해야합니까?

+0

'r.exec (...) '앞에'System.out.println ("Scriptpath :"+ scriptPath);를 삽입하십시오. 아마도 이것은 힌트를줍니다 – JimHawkins

+0

@JimHawkins JOptionDialog를 추가하여 jar 파일을 실행하면 파이썬 스크립트를 찾을 수 있습니다. –

+1

src에서 스크립트를 이동하여 외부에 배치 할 수 있습니다. src의 일부인 경우 자체 압축 파일 인 jar 파일 안에 번들로 제공됩니다. Alrernate 방법은 런타임에 script.py를 동적으로 생성하여 실행하고 .py 파일을 삭제하는 것입니다. – Aditya

답변

0

이 솔루션에서는 파일이있는 경우 스크립트를 실행합니다. 스크립트는 전체 또는 상대 경로 일 수 있습니다. 스크립트가 jar 파일에 없습니다.

TestPython.java

import java.lang.*; 
import java.io.*; 

public class TestPython { 
    public static void main(String[] args) { 

     System.out.println("I will run a Python script!"); 
     Runtime r = Runtime.getRuntime(); 
     String pyScript = "py/test.py"; 

     File f = new File(pyScript); 
     if (f.exists() && !f.isDirectory()) { 
      try { 
       Process p = r.exec("python " + pyScript); 
       BufferedReader in = new BufferedReader(
        new InputStreamReader(p.getInputStream())); 
       String line = null; 
       while ((line = in .readLine()) != null) { 
        System.out.println(line); 
       } 
       System.out.println("Python script ran!!"); 
      } catch (Exception ex) { 
       System.out.println("Something bad happened!!"); 
       ex.printStackTrace(); 
      } 
     } else { 
      System.out.println("Unexistent file!" + pyScript); 
     } 
    } 
} 

평/test.py

print("I'm a Python script!!!") 

출력 :

파이썬 스크립트를 실행합니다!

저는 파이썬 스크립트입니다!

파이썬 스크립트가 실행되었습니다.

관련 문제