如何从C#应用程序启动Java应用程序?
我正在研究一个我的世界发射器。是否有一种从C#应用程序启动任何jar的通用方法?
答案 0 :(得分: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
或~/
。而且,参数并不完全相同。假设您的用户将使用Mono for linux(或Apple)运行您的应用程序。我没有Mono方便为你测试选项,但你可以使用
public static bool IsLinux
{
get
{
int p = (int) Environment.OSVersion.Platform;
return (p == 4) || (p == 6) || (p == 128);
}
}
帮助您选择正确的起始路径。上面的代码被发现here。我注意到上面示例中的属性称为IsLinux
,但Mono文档中的引用表明6
适用于Mac OS X.这使我相信应该实际调用该属性{{1} (因为苹果狂热分子继续传播这种情况就是这种情况虽然苹果和Windows一样多的是unix)。我手边没有macware来测试这个,我把它留给学生。