2012-04-11 133 views
0

我被困在一件事上我無法解決。我有一部分代碼,從命令行像魅力一樣執行。工作沒有任何問題。從C#調用Java代碼#

所以,我會嘗試從C#中調用此命令(相同)。

這就是我從命令行運行的代碼。

的java -Xincgc -Xmx1024m -cp 「%APPDATA%.minecraft \ BIN \ minecraft.jar;%APPDATA%.minecraft \ BIN \ lwjgl.jar;%APPDATA%.minecraft \ BIN \ lwjgl_util.jar ;%APPDATA%.minecraft \ BIN \ jinput.jar」 -Djava.library.path = 「%APPDATA%.minecraft \ BIN \一代」 net.minecraft.client.Minecraft 「NAME」

的部分我試圖讓它在C#中看起來像:

proc.StartInfo.FileName = "java"; 
proc.StartInfo.Arguments = "-Xincgc -Xmx1024m -cp \"%APPDATA%\\.minecraft\\bin\\minecraft.jar;%APPDATA%\\.minecraft\\bin\\lwjgl.jar;%APPDATA%\\.minecraft\\bin\\lwjgl_util.jar;%APPDATA%\\.minecraft\\bin\\jinput.jar\" -Djava.library.path=\"%APPDATA%\\.minecraft\\bin\\natives\" net.minecraft.client.Minecraft \"NAME\""; 
proc.StartInfo.CreateNoWindow = true; 
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
proc.StartInfo.UseShellExecute = false; 
proc.StartInfo.RedirectStandardOutput = false; 
proc.Start(); 

但是,什麼也沒有發生。有什麼我做錯了嗎? 感謝您的幫助!

回答

4

使用Environment.ExpandEnvironmentVariables擴大Arguments中的環境變量。

string args = "-Xincgc -Xmx1024m -cp \"%APPDATA%\\.minecraft\\bin\\minecraft.jar;%APPDATA%\\.minecraft\\bin\\lwjgl.jar;%APPDATA%\\.minecraft\\bin\\lwjgl_util.jar;%APPDATA%\\.minecraft\\bin\\jinput.jar\" -Djava.library.path=\"%APPDATA%\\.minecraft\\bin\\natives\" net.minecraft.client.Minecraft \"NAME\""; 
proc.StartInfo.Arguments = Environment.ExpandEnvironmentVariables(args); 

順便說一句 - 您可以使用verbatim string literal使參數字符串更具可讀性。

@"-Xincgc -Xmx1024m -cp ""%APPDATA%\.minecraft\bin\minecraft.jar;%APPDATA%\.minecraft\bin\lwjgl.jar;%APPDATA%\.minecraft\bin\lwjgl_util.jar;%APPDATA%\.minecraft\bin\jinput.jar"" -Djava.library.path=""%APPDATA%\.minecraft\bin\natives"" net.minecraft.client.Minecraft ""NAME"""; 
+0

謝謝!工作正常! – user1326400 2012-04-11 12:15:09