【问题标题】:Launch jar from C#从 C# 启动 jar
【发布时间】:2012-05-13 12:07:51
【问题描述】:

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

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

【问题讨论】:

标签: c# jar minecraft


【解决方案1】:

您可以将 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);
    }
}

帮助您选择正确的起始路径。上面的代码找到here。我注意到上面示例中的属性称为 IsLinux,但 Mono 文档中的引用说 6 适用于 Mac OS X。这让我相信该属性实际上应该称为 IsUnix(因为苹果狂热者继续宣扬这样的情况是这样的,尽管苹果与 Windows 一样多的 unix 是 dos)。我手头没有 macware 来测试这个,我把它留给学生。

【讨论】:

  • 等等,我以为它会像 string appData = Environment.GetEnvironmentVariable("%APPDATA%");进入 appdata 文件夹
  • @Matthewj 不,% 只是在命令行上用于触发 var 查找,var 名称只是 appdata。
  • 好的,所以我尝试了代码,它打开了一个 java 命令提示符,几秒钟后它关闭了,但我的世界没有打开。
  • @Matthewj 它对我有用。我发帖前测试过。 linux还是windows?我们应该聊一聊这个问题并为你解决。我们可以使用 SO chat(或 irc,我一直在 esper 上的 minecrafthelp 中)。
猜你喜欢
  • 2016-01-20
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 2019-12-08
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
相关资源
最近更新 更多