0

我正在编写一个程序,作为附带功能,启动 Minecraft。目前,以下在 Windows 上运行良好:

String osSeparator = ";";
String osSeparatorLast = ";";
Runtime.getRuntime().exec("java -Xms" + settings.MinimumMemory() + " -Xmx" + settings.MaximumMemory() + " -cp \"" + bP + "minecraft.jar" + osSeparator + bP + "jinput.jar" + osSeparator + bP + "lwjgl.jar" + osSeparator + bP + "lwjgl_util.jar" + osSeparatorLast + "\" -Djava.library.path=\"" + bP + "natives\" net.minecraft.client.Minecraft" + " " + username + " " + sessionID);

通过测试,我发现在OS X终端中手动输入的结果如下:

String osSeparator = ":";
String osSeparatorLast = "";
Runtime.getRuntime().exec(new String[] {"java", "-Xms" + settings.MinimumMemory(), "-Xmx" + settings.MaximumMemory(), "-cp \"" + bP + "minecraft.jar" + osSeparator + bP + "jinput.jar" + osSeparator + bP + "lwjgl.jar" + osSeparator + bP + "lwjgl_util.jar" + osSeparatorLast + "\"", "-Djava.library.path=\"" + bP + "natives\"", "net.minecraft.client.Minecraft", username, sessionID});

出于某种原因,上面的代码不会启动 Minecraft,但会获取字符串结果并将其复制/粘贴回终端。

这是怎么回事?

4

1 回答 1

0

你传递一个数组有什么原因吗?为什么它不像第一个示例那样格式化?

这应该有效:

String osSeparator = ":";
String osSeparatorLast = "";
Runtime.getRuntime().exec("java -Xms" + settings.MinimumMemory() + " -Xmx" + settings.MaximumMemory() + "-cp \"" + bP + "minecraft.jar" + osSeparator + bP + "jinput.jar" + osSeparator + bP + "lwjgl.jar" + osSeparator + bP + "lwjgl_util.jar" + osSeparatorLast + "\"" + " -Djava.library.path=\"" + bP + "natives\" " + "net.minecraft.client.Minecraft" + username + sessionID);
于 2013-02-16T22:35:19.430 回答