1

有没有办法在不知道操作系统的情况下从 java 启动命令行?例如,该方法将打开 Linux 操作系统的终端外壳并打开 Windows 的命令行。

我确实知道(通过查看以前的问题)我可以检查操作系统,然后打开正确的命令行,但是有没有办法从与操作系统无关的 java 方法打开命令行?

4

3 回答 3

2

跨平台没有直接或统一的方式来做到这一点。您可以完成的一种方法是

  1. 确定操作系统(使用System.getProperty("os.name"))。
  2. 然后根据操作系统,执行操作系统特定的命令。

例如:(摘自此处的片段)

           String OS = System.getProperty("os.name").toLowerCase();

        if (isWindows(OS)) {
            String path = "c:\\";
            Runtime.getRuntime().exec(new String[] { "cmd.exe", "/C", "\"start; cd "+path+"\"" });;
        } else if (isMac(OS)) {
            //Open Mac Prompt
        } else if (isUnix(OS)) {
            //Open UnixPrompt
        } else if (isSolaris(OS)) {
            //Open Solaris Prompt
        } else {
            System.out.println("Your OS is not support!!");
        }

public static boolean isWindows(String OS) {

        return (OS.indexOf("win") >= 0);

    }

    public static boolean isMac(String OS) {

        return (OS.indexOf("mac") >= 0);

    }

    public static boolean isUnix(String OS) {

        return (OS.indexOf("nix") >= 0 || OS.indexOf("nux") >= 0 || OS.indexOf("aix") > 0 );

    }

    public static boolean isSolaris(String OS) {

        return (OS.indexOf("sunos") >= 0);

    }

请查找不同操作系统的相关代码

注意:它只是一个代码片段。它不会按原样编译。

于 2013-01-18T07:02:04.677 回答
0

在任何操作系统上安装 Java 后,您所做的就是使用它来创建自己的程序。Windows 中的命令行或 Linux 中的终端是操作系统的属性。

因此,即使 Java 中有一个 API 可以直接打开终端,该方法也会在内部检查操作系统。

于 2013-01-18T12:17:09.483 回答
0

命令:

Runtime.getRuntime().exec("command")

将适用于所有台式机/笔记本电脑操作系统平台。

于 2013-01-18T06:47:01.440 回答