2012-05-03 10 views
1

C#アプリケーションからJavaアプリケーションを起動するにはどうすればよいですか?C#の起動jar

私はミニクラフトランチャーで作業しています。 C#アプリケーションから任意のjarを起動する一般的な方法はありますか?

+0

Windows用のタグはありますか? – dwerner

+2

可能な複製http://stackoverflow.com/questions/873809/how-to-execute-a-java-program-from-cおよびhttp://stackoverflow.com/questions/129989/how-to-call- java-code-from-c – walther

答えて

2

あなたは新しいプロセスとしてjarファイルを起動することができます:

string appData = Environment.GetEnvironmentVariable("APPDATA"); 

Process.Start(@"java", 
    @"-Xms512m -Xmx1024m -cp """ + appData + @"\.minecraft\bin\*"" -Djava.library.path=""" + appData + @"\.minecraft\bin\natives"" net.minecraft.client.Minecraft"); 

これはjavaは内にあるとみなされ、あなたのPATH(Javaがインストールされているときには、デフォルトで起こります)。そうでない場合は、javaの絶対パスを使用します。

これはゲームを直接開始しています。ユーザーがどこに置いたかを教えてくれたら、ミニクラフトランチャーを使用できます。 Windowsでは、これはexeファイルなので、直接起動することができます。

また、APPDATAはウィンドウの変数です。 Linuxの場合、パスは$HOMEまたは~/です。また、パラメタは全く同じではありません。あなたのユーザーがLinux(またはリンゴ)用にMonoを使ってアプリケーションを実行すると仮定します。私はあなたのためのオプションをテストするモノが手元にありませんが、あなたは、あなたが正しいスタートパスを選択しやすくするために

public static bool IsLinux 
{ 
    get 
    { 
     int p = (int) Environment.OSVersion.Platform; 
     return (p == 4) || (p == 6) || (p == 128); 
    } 
} 

を使用することができます。上記コードはhereです。上記のサンプルのプロパティはIsLinuxとなっていますが、Mono docsからの引用では6がMac OS X用であると言われています。このプロパティは実際にはIsUnixと呼ばれるべきです(リンゴの狂信者はそのように説き続けますアップルはWindowsと同じくらいUnixです)。私はこれをテストするための手持ちのMacwareを持っていない、私は学生にそれを残す。

+0

待って、私はそれが文字列のようになると思ったappData = Environment.GetEnvironmentVariable( "%APPDATA%"); appdataフォルダに移動するには – Matthewj

+0

@Matthewj nope、%はコマンドラインでvarルックアップをトリガするために使用され、var名はappdataだけです。 – payo

+0

申し訳ありませんが、私はコードを試してみて、それはjavaコマンドプロンプトを開き、数秒後に閉じますが、minecraft doesntは開きます。 – Matthewj

関連する問題