问题是,我正试图使一个游戏启动器,当你登录它去并开始实际的游戏。
我被告知这样做的代码是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
的程序,传入以下参数:
-
-jar
-
C:Documents
-
and
-
SettingsMyselfwhatever.jar
最安全的执行方法是传递一个字符串数组。
Runtime.exec(new String[] {"java", "-jar", g.get("HOME")+"/.2DMC/bin/2DG.jar"});
我找到我的问题了。它在我的第二个罐子边。我没有正确加载一些库,所以它不能从不同的位置工作。
我已经解决了我的问题。谢谢你的帮助