1

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

我被告知这样做的代码是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)

感谢所有帮助

4

2 回答 2

2

由于您没有解释尝试运行时会发生什么java -jar(异常?什么?你得到一个Process对象吗?),我可以想到它发生的一个原因。您的HOME环境变量包含一个空格(您在 Windows 下,不是吗),这使exec().

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

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

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

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

Runtime.exec(new String[] {"java", "-jar", g.get("HOME")+"/.2DMC/bin/2DG.jar"});
于 2013-03-05T10:39:47.803 回答
0

我发现了我的问题。它在我的第二个罐子边。我没有正确加载一些库,所以它不能在不同的位置工作。

我已经解决了我的问题。谢谢您的帮助

于 2013-03-06T11:17:01.673 回答