Java运行cmd安全性

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

我正在尝试运行一个示例来启动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 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");