Java运行cmd安全性
我正在尝试运行一个示例来启动CMD。我从执行中得到一个错误。文件当然在正确的位置。所以我猜这是一个权限错误。有人能告诉我如何解决这个问题吗 我正在eclipse中运行程序。但在尝试运行jar文件时也存在同样的问题Java运行cmd安全性,java,Java,我正在尝试运行一个示例来启动CMD。我从执行中得到一个错误。文件当然在正确的位置。所以我猜这是一个权限错误。有人能告诉我如何解决这个问题吗 我正在eclipse中运行程序。但在尝试运行jar文件时也存在同样的问题 Exception in thread "main" java.io.IOException: Cannot run program "c:\Windows\system32\cmd.exe /c dir": CreateProcess error=2, The system cann
Exception in thread "main" java.io.IOException: Cannot run program "c:\Windows\system32\cmd.exe /c dir": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at com.test.ProcessBuilderExample.main(ProcessBuilderExample.java:13)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
package com.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.security.AllPermission;
import java.security.CodeSource;
import java.security.PermissionCollection;
import java.security.Permissions;
import java.security.Policy;
public class ProcessBuilderExample {
public static void main(String[] args) throws InterruptedException,
IOException {
ProcessBuilder pb = new ProcessBuilder("c:\\Windows\\system32\\cmd.exe /c dir", "This is ProcessBuilder Example from JCG");
System.out.println("Run echo command");
Process process = pb.start();
int errCode = process.waitFor();
System.out.println("Echo command executed, any errors? " + (errCode == 0 ? "No" : "Yes"));
System.out.println("Echo Output:\n" + output(process.getInputStream()));
}
private static String output(InputStream inputStream) throws IOException {
StringBuilder sb = new StringBuilder();
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line + System.getProperty("line.separator"));
}
} finally {
br.close();
}
return sb.toString();
}
}
您应该将参数作为第二个参数 改变
ProcessBuilder pb = new ProcessBuilder("c:\\Windows\\system32\\cmd.exe /c dir", "This is ProcessBuilder Example from JCG");
进入
参数应位于
ProcessBuilder
构造函数的不同参数中。请参见示例,它不应该是新的ProcessBuilder(“c:\\Windows\\system32\\cmd.exe”,“c”,“dir”)?
ProcessBuilder pb = new ProcessBuilder("cmd.exe", " /c dir","This is ProcessBuilder Example from JCG");