从java打开cmd

从java打开cmd,java,Java,所以我想用这段代码通过java打开cmd import java.io.IOException; public class mainer { public static void main(String args[]) { try { Runtime.getRuntime().exec("cmd.exe /c start"); System.out.println("ok"); } catch (IOExcep

所以我想用这段代码通过java打开cmd

import java.io.IOException;

public class mainer {
    public static void main(String args[]) {
        try {
           Runtime.getRuntime().exec("cmd.exe /c start");
           System.out.println("ok");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
但是当我执行它的时候,我得到了这个错误

java.io.IOException: Cannot run program "cmd.exe": CreateProcess error=193, %1 is not a valid Win32 application
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at mainer.main(mainer.java:6)
Caused by: java.io.IOException: CreateProcess error=193, %1 is not a valid  Win32 application
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 5 more
java.io.IOException:无法运行程序“cmd.exe”:CreateProcess错误=193,%1不是有效的Win32应用程序
位于java.lang.ProcessBuilder.start(未知源)
位于java.lang.Runtime.exec(未知源)
位于java.lang.Runtime.exec(未知源)
位于java.lang.Runtime.exec(未知源)
在mainer.main(mainer.java:6)
原因:java.io.IOException:CreateProcess错误=193,%1不是有效的Win32应用程序
在java.lang.ProcessImpl.create(本机方法)
位于java.lang.ProcessImpl。(未知源)
位于java.lang.ProcessImpl.start(未知源)
... 还有5个
有趣的是,它在两天前工作,现在它给了我一个奇怪的错误,我想应该是:

Runtime.getRuntime().exec(new String[]{"cmd.exe","/c","start"});

要了解有关的详细信息,请在命令提示下键入
帮助启动。

您的PATH变量中似乎没有指向cmd.exe的路径,因此最好尝试此方法

import java.io.IOException;

public class mainer {
    public static void main(String args[]) {
        try {
           Runtime.getRuntime().exec(new String[]{System.getenv().get("SystemRoot")+"/cmd.exe", "/c", "start"});
           System.out.println("ok");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

也许您尝试从32位JRE启动64位
cmd.exe


尝试执行32位的
C:\Windows\SysWOW64\cmd.exe

'Runtime.getRuntime().exec(新字符串[]{“cmd.exe”,“/C”,“start”});'给出了相同的错误+抱歉,我是该网站的新手,我发现很难将测试标记为codeCheck@fabian barney answer。您可能正在x64机器上使用32位Java。我正在使用32位操作系统和32位Java…您的代码在我的机器上成功执行。。。该问题可能与操作系统和java不匹配有关(32位和64位)