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 当我将参数传递到beyond compare时,ProcessBuilder不工作_Java_Processbuilder - Fatal编程技术网

Java 当我将参数传递到beyond compare时,ProcessBuilder不工作

Java 当我将参数传递到beyond compare时,ProcessBuilder不工作,java,processbuilder,Java,Processbuilder,当我尝试执行Beyond compare exe时 我无法传递左侧和右侧文件的参数 public static void exceutecmd() throws ServletException, IOException { boolean is64bit = false; if (System.getProperty("os.name").contains("Windows")) { is64bit = (System.getenv("ProgramFiles

当我尝试执行Beyond compare exe时

我无法传递左侧和右侧文件的参数

public static void exceutecmd() throws ServletException, IOException {
    boolean is64bit = false;

    if (System.getProperty("os.name").contains("Windows")) {
        is64bit = (System.getenv("ProgramFiles(x86)") != null);
    } else {
        is64bit = (System.getProperty("os.arch").indexOf("64") != -1);
    }

    String bin = "C:\\Optum Symmetry Suite\\Symmetry 9.1\\bin";
    String File1 = " C:\\Optum Symmetry Suite\\Symmetry 9.1\\bin\\1.TXT";
    String File2 = " C:\\Optum Symmetry Suite\\Symmetry 9.1\\bin\\2.TXT";

    System.out.println(bin);
    String exe = bin;
    //String configfile = defaultsvaluesSym.get("xml file path");
    //System.out.println(configfile);
    StringBuilder sbd = new StringBuilder();
    if (is64bit) {
        exe = File.separator + "/BC2.exe";
    } else {
        exe = File.separator + "/BC2.exe";
    }

    ****ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "cd \""
            + bin + "\" && \"" + bin + exe +"\"",File1,File2);****

    builder.redirectErrorStream(true);
    Process p = null;
    try {
        p = builder.start();
    } catch (IOException e) {

        e.printStackTrace();
    }
    BufferedReader r = new BufferedReader(new InputStreamReader(
            p.getInputStream()));
    String line = null;
    while (true) {
        try {
            line = r.readLine();
            sbd.append(line);
        } catch (IOException e) {

            e.printStackTrace();
        }
        if (line == null) {
            break;  
        }
    }
    System.out.println(sbd.toString());

}
我能够执行beyond compare exe,但无法传递参数

请帮助我解决此问题

删除命令中的“cd”部分。您正在使用完整路径调用程序,并为参数传递完整路径

exe = File.separator + "/BC2.exe";
不需要字符“/”,因为您已经添加了File.separator。

public void exceutecmd(HttpServletRequest, HttpServletResponse响应,字符串fileName1,字符串fileName2)引发ServletException,IOException{ 布尔值为64位=false; 如果(System.getProperty(“os.name”).包含(“Windows”)){ IS64位=(System.getenv(“ProgramFiles(x86)”)!=null; }否则{ IS64位=(System.getProperty(“os.arch”).indexOf(“64”)!=-1); }

    String bin = "C:\\Optum Symmetry Suite\\Symmetry 9.1\\bin";

    System.out.println(bin);
    String exe = bin;
    // String configfile = defaultsvaluesSym.get("xml file path");
    // System.out.println(configfile);
    StringBuilder sbd = new StringBuilder();
    if (is64bit) {
        exe = File.separator + "BC2";
    } else {
        exe = File.separator + "/BC2.exe";
    }

    /*ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "cd \""
            + bin + "\" && \"" + bin + exe + "\"");*/

    ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "cd \""
            + bin + "\" && \"" + bin + exe + "\""+" \""+fileName1+"\""+" \""+fileName2+"\"");
    builder.redirectErrorStream(true);
    Process p = null;
    try {
        p = builder.start();
    } catch (IOException e) {

        e.printStackTrace();
    }
    BufferedReader r = new BufferedReader(new InputStreamReader(
            p.getInputStream()));
    String line = null;
    while (true) {
        try {
            line = r.readLine();
            sbd.append(line);
        } catch (IOException e) {

            e.printStackTrace();
        }
        if (line == null) {
            break;
        }
    }
    System.out.println(sbd.toString());
    /*
     * RequestDispatcher rd =
     * request.getRequestDispatcher("runAccGrouper.jsp");
     * rd.forward(request, response);
     */
}

谢谢库奇马,我找到了答案