1

如何从 C# 应用程序启动 java 应用程序?

我正在开发一个我的世界发射器。是否有从 C# 应用程序启动任何 jar 的通用方法?

4

1 回答 1

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 的绝对路径。

这是直接启动游戏 - 如果用户告诉你他们把它放在哪里,你可以使用 minecraft 启动器。在windows上,这是一个exe,所以你可以直接启动它。

此外,APPDATA 是窗口的变量。对于 linux,路径在$HOME, 或~/. 此外,参数并不完全相同。假设您的用户将使用 Mono for linux(或苹果)运行您的应用程序。我没有方便为您测试选项的 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)。我手头没有 macware 来测试这个,我把它留给学生。

于 2012-05-03T23:17:32.140 回答