3

Windowsコマンドプロンプトからうまく機能するpythonコンパイル済みスクリプト(script.pyc、.pyファイルはありません)があり、Javaのアプリケーションから実行したいと考えています。runtime() メソッドを使用しようとしました:

        Runtime runtime = Runtime.getRuntime();
    runtime.exec(new String[] {"C:\\toto\\tools\\script.pyc" ,"arg","arg2" });

しかし、私はエラーが発生します:

Exception in thread "main" java.io.IOException: Cannot run program "C:\Nuance\VoCon Hybrid\SDK_v4_3\tools\clctodict.pyc": CreateProcess error=193, %1 n?est pas une application Win32 valid

スクリプトは私の端末でうまく機能します (「arg」は txt ファイル、「arg2」は出力名で、スクリプトは問題なく機能します)。

また、 getDesktop() を使用してスクリプトを起動しようとしています。

        File fie = new File("C:\\toto\\tools\\script.pyc" ,"arg","arg2");
    Desktop.getDesktop().open(fie); 

問題はありませんが、引数を追加できないため、端末ウィンドウが数秒間開いてからすぐに消えるのを見ることができます。私もJPythonを使用しようとしましたが、成功しませんでした(.pycでメソッド「execfile」を使用できない可能性があります????)

4

2 に答える 2

2

.class を実行するために jvm が必要なように、.pyc を実行するには Python インタープリターが必要です。

次のようなものを試してください:

runtime.exec(new String[] {"c:\\Python26\\bin\\python.exe", "C:\\toto\\tools\\script.pyc" ,"arg","arg2" });
于 2012-07-31T16:23:12.057 に答える
2

次のようなことができます

Process p = Runtime.getRuntime().exec(new String[]{"python.exe" ... other args)

次に、 p.waitFor() を呼び出してプロセスの終了を待機し、 p.exitValue() を呼び出してプログラムが正常に終了したかどうかをテストできます。

p.getOutputStream() 経由で出力ストリームを取得して、Python スクリプトによって出力されたテキストを取得することもできます。

詳細については、クラスのドキュメントを参照してください: http://docs.oracle.com/javase/6/docs/api/java/lang/Process.html

于 2012-08-01T14:32:48.937 に答える