非静态字段,方法或属性需要对象引用

时间:2011-01-17 20:23:50

标签: c# java .net

我写了一个非常小的函数来在C#NET中启动Java应用程序,但是我收到错误“非静态字段,方法或属性需要对象引用'MinecraftDaemon.Program.LaunchMinecraft()' C:\用户\麦克\桌面\我的世界\ MinecraftDaemon \的Program.cs”。我已经搜索过遭受同样问题的其他主题但我不明白这意味着什么或为什么我会得到它。

namespace MinecraftDaemon
{
    class Program
    {
        public void LaunchMinecraft()
        {
            ProcessStartInfo processInfo = new ProcessStartInfo("java.exe", "-Xmx1024M -Xms1024M -jar minecraft_server.jar nogui");
            processInfo.CreateNoWindow = true;
            processInfo.UseShellExecute = false;

            try
            {
                using (Process minecraftProcess = Process.Start(processInfo))
                {
                    minecraftProcess.WaitForExit();
                }
            }
            catch
            {
                // Log Error
            }
        }

        static void Main(string[] args)
        {
            LaunchMinecraft();
        }
    }
}

5 个答案:

答案 0 :(得分:4)

您需要将其更改为:

public static void LaunchMinecraft()

这样,静态Main方法可以访问静态LaunchMinecraft方法。

答案 1 :(得分:4)

LaunchMinecraft不是静态方法,因此如果不从Main对象调用它,则无法在静态方法Program中访问它。

两个选项
 1.使LaunchMinecraft静态

public void LaunchMinecraft() 
{ ... }  

2。在Program中创建一个新的Main对象并以此方式调用。

var program = new Program();
program.LaunchMinecraft();

答案 2 :(得分:0)

您正尝试从静态方法(无需特定对象的方法)调用实例方法(即需要特定对象进行操作的方法)。使LaunchMinecraft方法也是静态的。

答案 3 :(得分:0)

我对C#了解不多,但Main()方法是静态的,而LaunchMinecraft() 则不是,这就是导致此错误的原因。

答案 4 :(得分:0)

     static void Main(string[] args)
            {
                Program pg = new Program();
                pg.LaunchMinecraft();

            }

试试这个。