问题是我正在尝试制作一个游戏启动器,当你登录它时会开始实际的游戏。
我被告知执行此操作的代码是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
ouput
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)
所有帮助apreciated
答案 0 :(得分:2)
由于你没有解释当你试图运行java -jar
时会发生什么(例外?什么?你得到一个Process
对象吗?),我可以想到它发生的一个原因。您的HOME
环境变量包含一个空格(您在Windows下,不是您),这会让exec()
感到困惑。
如果我的理论是正确的,那么exec()
实际上正在解析你的单字符串命令,如下所示:假设HOME
= C:\Documents and Settings\Myself
-
执行名为java
的程序,传入以下参数:
-jar
C:\Documents
and
Settings\Myself\whatever.jar
最安全的执行方式是传入一个字符串数组,而不是。
Runtime.exec(new String[] {"java", "-jar", g.get("HOME")+"/.2DMC/bin/2DG.jar"});
答案 1 :(得分:0)
我发现了我的问题。它出现在我的第二个罐子里。我没有正确加载一些库,所以它不能从不同的位置工作。
我解决了我的问题。谢谢你的帮助