Java 当我将参数传递到beyond compare时,ProcessBuilder不工作
当我尝试执行Beyond compare exe时 我无法传递左侧和右侧文件的参数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
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);
*/
}
谢谢库奇马,我找到了答案