.exec Java Runtime.getRuntime () ();不运行程序



问题是,我正试图使一个游戏启动器,当你登录它去并开始实际的游戏。

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

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

  1. -jar
  2. C:Documents
  3. and
  4. SettingsMyselfwhatever.jar

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新