gpt4 book ai didi

linux - Java Runtime.getRuntime().exec();没有运行程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:24:37 32 4
gpt4 key购买 nike

问题是我正在尝试制作一个游戏启动器,当您登录时它会开始实际游戏。

我被告知要执行此操作的代码是 Runtime.getRuntime().exec();

我可以运行像 Runtime.getRuntime().exec("firefox"); 这样的简单程序,但是当我尝试运行我的程序时,它没有启动。

这是我的代码

Map<String, String> g = System.getenv(); //find home dir
System.out.println("java -jar " + g.get("HOME") + "/.2DMC/bin/2DG.jar");
Runtime.getRuntime().exec("java -jar " + g.get("HOME") + "/.2DMC/bin/2DG.jar");

我也试过

Map<String, String> g = System.getenv(); //find home dir
System.out.println("java -jar " + g.get("HOME") + "/.2DMC/bin/2DG.jar");
Process proc = Runtime.getRuntime().exec("java -jar " + g.get("HOME") +
"/.2DMC/bin/2DG.jar");

我正在使用 Linux Debian

使用 java -version 输出

java version "1.6.0_27"
OpenJDK Runtime Environment (IcedTea6 1.12.3) (6b27-1.12.3-1)
OpenJDK Client VM (build 20.0-b12, mixed mode, sharing)

感谢所有帮助

最佳答案

由于您没有解释当您尝试运行 java -jar 时会发生什么(异常?任何事情?您是否返回了一个 Process 对象?),我可以想想它发生的原因之一。您的 HOME 环境变量包含一个空格(您在 Windows 下,不是吗),这会混淆 exec()

如果我的理论是正确的,那么 exec() 实际上是按如下方式解析您的单字符串命令:假设 HOME=C:\Documents and Settings\我自己 -

执行名为 java 的程序,传入以下参数:

  1. -jar
  2. C:\Documents
  3. Settings\Myself\whatever.jar

最安全的执行方式是传入一个字符串数组。

Runtime.exec(new String[] {"java", "-jar", g.get("HOME")+"/.2DMC/bin/2DG.jar"});

关于linux - Java Runtime.getRuntime().exec();没有运行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15221456/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com