2012-01-25 40 views
2

Pythonスクリプトから受け取った出力に依存するため、私はJavaコードの実行中にPythonスクリプトを実行しようとしています。これまで私はjythoncを使ってみましたが、残念ながら成功しませんでしたが、今ではRuntimeProcessというJavaスクリプトを使ってPythonスクリプトを実行しようとしています。JavaでPythonスクリプトを実行する

今、私はPythonスクリプトを呼び出そうとすると問題に遭遇しました。私は次のページに行くのに数秒もかからないので、スクリプトを呼び出すことさえしないように感じます....

私はPythonスクリプトをどのように呼び出すのでしょうか?コマンドの

String run = "cmd /c python duplicatetestingoriginal.py" ; 

    boolean isCreated = fwr.writeFile(BugFile, GD, 500, true, 5, "LET"); 

    if(isCreated){ 
     try{ 
      r = Runtime.getRuntime(); 
      p = r.exec(run); 
      BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream())); 
    BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream())); 

    String line = ""; 
    while ((line = stdInput.readLine()) != null) { 
       System.out.println(line); 
    } 
    while ((line = stdError.readLine()) != null) { 
       errorW.write(line); 
    } 

      int exitVal = p.waitFor(); 
      arrayList = fwr.readResults(); 
     }catch(Exception e){ 

     } 
    } 
    else{ 
     // troubleshoot.... 

    } 
+0

Windowsで実行していますか?はい。あなたのPATHに 'python'はありますか? 'cmd/c python duplicatetestingoriginal.py'と入力して「スタート」 - >「ファイル名を指定して実行」と入力するとどうなりますか? – Managu

+1

また、stdInput/stdErrorの読み方を再考することもできます。 「Runtime.execが実行されないとき」を参照してください。http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html – Managu

+0

はい私はWindowsで動作しています。また、PythonはPATHにあります。このコードは、cmdlineまたはRunに入力すると実行されます。 – Shahab

答えて

3

代わりの文字列、チャンクにそれを分割し、String []型を作る:私はここに

は私のコードのいくつかはある... Webアプリケーションを介してこれを実行しようとしています。状態を示す必要はありませんcmd /c、と思います。

これは私のアプリケーションからのサンプルコードではありません:

//Running on windows 
command = new String[4]; 
command[0]=directory.getCanonicalPath()+"/data/ExtenalApp.exe"; //extenal commandline app, not placed in path, but in subfolder 
command[1]=directory.getCanonicalPath()+"/data/SomeFile.txt"; //file needed for the external app, sent as an argument 
command[2]=arg1; //argument for the app 
command[3]=arg2; //argument for the app 

//Running on Mac 
command = new String[6]; 
command[0]="python"; 
command[1]=directory.getCanonicalPath()+"/data/wp.py"; //path to the script 
command[2]="-F"; //argument/Flag/option 
command[3]="--dir="+path; //argument/option 
command[4]="--filename="+filename; //argument/option 
command[5]=argument; //argument/option 


Process process = Runtime.getRuntime().exec(command); 
process.waitFor(); 
process.destroy(); 

私はスクリプト/アプリが入力を必要としないため、入力/出力ストリームを処理し、終了のみ出力していない、重要な何も。あなたにとってはそうではないかもしれません。

関連する問題