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 に答える