C#アプリケーションからJavaアプリケーションを起動するにはどうすればよいですか?
私はMinecraftランチャーに取り組んでいます。C#アプリケーションからjarを起動する一般的な方法はありますか?
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への絶対パスを使用します。
これはゲームを直接開始します。ユーザーがどこに置いたかを教えてくれれば、Minecraftランチャーを使用できます。Windowsでは、これはexeであるため、直接起動できます。
また、APPDATAはウィンドウの変数です。Linuxの場合、パスは、、$HOME
または~/
です。また、パラメータはまったく同じではありません。ユーザーがMonoforlinux(またはApple)でアプリを実行すると仮定します。私はあなたのためにオプションをテストするのに便利なMonoを持っていませんが、あなたは使うことができます
public static bool IsLinux
{
get
{
int p = (int) Environment.OSVersion.Platform;
return (p == 4) || (p == 6) || (p == 128);
}
}
正しい開始パスを選択するのに役立ちます。上記のコードはここで見つかりました。上記のサンプルのプロパティはと呼ばれIsLinux
ていますが、Mono docsからの引用による6
と、Mac OS X用です。これにより、プロパティは実際に呼び出されるべきであると私は信じていますIsUnix
(アップルの狂信者が説教を続けているため、アップルはWindowsと同じくらい多くのUNIXがdosです)。私はこれをテストするためのマックウェアを手元に持っていません、私はそれを学生に任せます。