我有一个python编译脚本(script.pyc,我没有.py文件),它在我的Windows命令提示符下运行良好,我想从我的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上使用methode“execfile”????)
答案 0 :(得分:2)
就像你需要一个运行.class的jvm一样,你需要一个python解释器来运行.pyc。
尝试类似:
runtime.exec(new String[] {"c:\\Python26\\bin\\python.exe", "C:\\toto\\tools\\script.pyc" ,"arg","arg2" });
答案 1 :(得分: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