"The method main cannot be declared static; static methods can only be declared in a static or top level type"

StackOverflow https://stackoverflow.com/questions/22787063

Frage

class Perkusja {
  boolean talerze = true;
  boolean beben = true;

  void zagrajNaBebnie() {
    System.out.println("bam, bam, baaaa-am-am");
  }
  void zagrajNaTalerzach() {
    System.out.println("brzdęk, brzbrzrzdęęk");
  }
  class PerkusjaTester {
    public static void main(String[] args) {
        Perkusja p = new Perkusja();
    }
  }
}

Hello! I'm new to stackoverflow so please forgive me my atrocious editing.

I'm new to Java and i can't figure out where exactly the issue lies and what's the problem. I get the following error on the line public static void main(String[]args):

The method main cannot be declared static; static methods can only be declared in a static or top level type

I'm using eclipse and i'm doing some simple java exercises. I googled the problem but the answers are usually related to much more complex pieces of code.

How do i fix it and what's the cause of the following error? I'd be grateful for an explanation on this particular example.

Cheers!

War es hilfreich?

Lösung

You are declaring your main method in PerkusjaTester which is an inner class of Perkusja. That is forbidden.

You should declare your test class outside of class Perkusja

Note : PerkusjaTester is an inner class, not a static nested class. That is why PerkusjaTester is not a static type. As mentionned by Jon Skeet, you could also add the keyword static on class PerkusjaTester.

Andere Tipps

This code cannot work since, conceptually, an instance of an Perkusja would have to be declared in advance of main being called.

This is because the inner class PerkusjaTester is not marked as static.

The best fix for you is to write static class PerkusjaTester {.

Then main is accessible.

The main method in PerkusjaTester is an inner class of Perkusja which is forbidden. Considering you are new to this the simple answer I can give is, remove the last curly bracket and put it above class PerkusjaTester, the error will be removed.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top