Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中运行Python脚本_Java_Python_Process_Runtime - Fatal编程技术网

在Java中运行Python脚本

在Java中运行Python脚本,java,python,process,runtime,Java,Python,Process,Runtime,我试图在java代码执行期间运行python脚本,因为它将取决于从python脚本接收的输出。到目前为止,我已经尝试使用jythonc,不幸的是没有成功,现在我尝试使用java和java来执行python脚本 现在,我在尝试调用python脚本时遇到了一个问题。我觉得它甚至没有调用脚本,因为它只需不到几秒钟就可以进入下一页 问题可能是我如何调用python脚本??我正在尝试通过一个web应用程序运行这个 以下是我的一些代码: String run = "cmd /c python dup

我试图在java代码执行期间运行python脚本,因为它将取决于从python脚本接收的输出。到目前为止,我已经尝试使用jythonc,不幸的是没有成功,现在我尝试使用java和java来执行python脚本

现在,我在尝试调用python脚本时遇到了一个问题。我觉得它甚至没有调用脚本,因为它只需不到几秒钟就可以进入下一页

问题可能是我如何调用python脚本??我正在尝试通过一个web应用程序运行这个

以下是我的一些代码:

    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....

    }

将命令拆分为块并生成字符串[],而不是字符串。我想,没有必要说明
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();

我不处理输入/输出流,因为脚本/应用程序不需要输入,只有在完成时才输出,这并不重要。这可能不适合您。

您正在Windows下运行,是吗?“python”在你的道路上吗?如果在开始->运行中键入
cmd/c python duplicatetestingoriginal.py
,会发生什么情况?您可能还需要重新考虑如何读取stdInput/stdError。请参阅“When Runtime.exec will not”:是的,我正在Windows中运行,python在我的路径中。当我在cmdline或run中键入代码时,代码会运行。运行Java代码时,
duplicatetestingoriginal.py
可能不在当前目录中吗?也许在那里放一个完整的绝对路径?另一个想法:你
捕获(异常e)
然后丢弃它。可能正在抛出异常?添加一个
e.printStackTrace()调试时。