【问题标题】:CMD commands in other OS systems [duplicate]其他操作系统系统中的 CMD 命令 [重复]
【发布时间】:2012-12-27 20:43:16
【问题描述】:

可能重复:
Execute another jar in a java program

我正在制作一个从 Java 文档运行并运行 Java 文档的程序。 我正在使用 Windows 和

Process pr = Runtime.getRuntime().exec(
   "cmd /c start cmd.exe /c \"cd %appdata%\\.gknl && java -jar launcher.jar\""
);

对我来说很好,但在 linux、Mac 等上它不会工作,

有人可以帮我修复其他操作系统吗?

注意:我已经检查了操作系统...

【问题讨论】:

  • 不要这样运行程序,使用ProcessBuilder。

标签: java linux windows command cmd


【解决方案1】:

Linux:

Process pr = Runtime.getRuntime().exec(new String[]{"csh","-c","cd " + appdata +"\.gknl &&  java -jar launcher.jar");

【讨论】:

  • csh 未安装在所有 Linux 系统上。我面前有 4 个系统,而我只有 1 个。如果你想确保某些东西会起作用,你可以使用 sh。那是在我的 Ubuntu、Fedoras 和我的 Raspian 系统上。
  • 我在任何我必须工作的地方安装 csh ;)
【解决方案2】:

在 Linux/Unix 中,您想使用 sh。这将在大多数系统上链接到 bash、zsh 或 csh。

我 95% 确定 sh 也在 Mac 上,但我需要拔掉我的 Raspberry Pi 并将所有东西放回我的 Mac Mini 以进行验证。

【讨论】:

    【解决方案3】:

    cmd.exe 是 Windows shell 可执行文件,您需要使用 Linux/Mac shell 之一:

    ProcessBuilder pb = new ProcessBuilder(
            "sh", "-c",
            "cd $appdata/.gknl && java -jar launcher.jar");
    pb.start();
    

    如果launcher.jar 在类路径上,则应该可以从调用应用程序启动主应用程序类,但不使用Process/ProcessBuilder。

    【讨论】:

      猜你喜欢
      • 2014-01-23
      • 2014-07-31
      • 1970-01-01
      • 2011-11-17
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 2012-08-27
      相关资源
      最近更新 更多