CrazyEngineers
  • can we use 2 main on 1 class in java?

    ashie

    Member

    Updated: Oct 26, 2024
    Views: 1.2K
    is it valid or it gave compilation error

    public class test{
    int j;
    public void show();
    public void see()

    public static void main(string args[])
    {
    test test=new test();
    test.show();
    }
    public static void main(string args[])
    {
    test.see()
    }
    }
    0
    Replies
Howdy guest!
Dear guest, you must be logged-in to participate on CrazyEngineers. We would love to have you as a member of our community. Consider creating an account or login.
Replies
  • Neeraj Sharma

    MemberJun 13, 2012

    You can write a program with multiple main in a single class in java but the above program will give error. To be able to use multiple main methods inside a class, you must overload the main method. In the above program both the main methods have same arguments so it won't execute.
    The following program will work though:

    class MultiMain
    {
      public static void main(String[] args)
      {
        main(1);
        main('a');
      }
      public static void main(int i)
      {
        System.out.println("Integer main");
      }
      public static void main(char a)
      {
        System.out.println("Char main");
      }
    }
    In this way you can use multiple mains inside a single class in Java
    Are you sure? This action cannot be undone.
    Cancel
  • formesush

    MemberJun 27, 2012

    If we are writing two main a class,how will the compiler know which one to call when it runs??
    Are you sure? This action cannot be undone.
    Cancel
  • Anoop Kumar

    MemberJun 27, 2012

    formesush
    If we are writing two main a class,how will the compiler know which one to call when it runs??
    It will take only this public static void main(String[] args)
    method signature as starting point....
    Are you sure? This action cannot be undone.
    Cancel
  • sookie

    MemberJun 28, 2012

    formesush
    If we are writing two main a class,how will the compiler know which one to call when it runs??
    Compiler never decides run time execution. It just check whether the program written is semantically and syntax wise correct or not. According to Java semantics you cannot have a method with exactly same signature twice right? Hence compiler throws the error.

    i think in this case there is no need to got upto run time execution.
    Are you sure? This action cannot be undone.
    Cancel
  • Vikash Verma

    MemberJul 2, 2012

    #-Link-Snipped-# first of all, your program is syntactically wrong... the signature of main method must be one of the following...​
    public static void main(String[] args)
    public static void main(String... anything)

    you can only overload main method i.e. parameters in the main method must be different,but the program will execute iff one of the above two main method is present...😎
    Are you sure? This action cannot be undone.
    Cancel
  • Vikash Verma

    MemberJul 2, 2012

    #-Link-Snipped-# , two main method with same signature can never exist in a java program, also it is the JVM which always calls the main method and not the java compiler... 😎
    Are you sure? This action cannot be undone.
    Cancel
  • TaraJava

    MemberJul 2, 2012

    no we cant have multiple main class ,no way
    Are you sure? This action cannot be undone.
    Cancel
  • Neeraj Sharma

    MemberJul 3, 2012

    TaraJava
    no we cant have multiple main class ,no way
    You can have it by overloading. Check the above posts..
    Are you sure? This action cannot be undone.
    Cancel
  • fakirguy

    MemberJul 5, 2012

    I agree with Vikash Verma. It is important to note that the Java compiler will never call the main() method. Java compiler (javac.exe) is not even in the picture when you are executing your program. When you are executing your program, the Java compiler (java.exe) looks for public static void main(String[] args) in the class you ask it to execute.
    Are you sure? This action cannot be undone.
    Cancel
  • Anoop Kumar

    MemberJul 5, 2012

    fakirguy
    . When you are executing your program, the Java compiler (java.exe) looks for public static void main(String[] args) in the class you ask it to execute.
    the Java compiler (java.exe)
    Please correct here java.exe is JVM invoker which load class file and run it.
    javac.exe (on windows machine) is java compiler invoker.
    Are you sure? This action cannot be undone.
    Cancel
  • Charan Raj

    MemberJul 15, 2018

    The answer is Yes, but you should consider the following 3 points. 

    1. No two main method parameter should be the same 

    Eg. public static void main(int i) 

    public static void main(int i, int j) 

    public static void main(double j) 

    public static void main(String[] args) 

    2. Java’s actual main method is the one with (String[] args), So the Actual execution starts from public static void main(String[] args), so the main method with (String[] args) is must in a class unless it is a child class. 

    3. In order for other main methods to execute you need to call them from inside the (String[] args) main method. 

    Here is a detailed video:

    <a href="https://www.youtube.com/watch?v=Qlhslsluhg4" target="_blank" rel="nofollow noopener noreferrer">- YouTube</a>

    Are you sure? This action cannot be undone.
    Cancel
Home Channels Search Login Register