Published 19 Sep, 2022

Java - Scala IDE Error: Main method not found in class 'hello'

Category Java
Modified : Oct 03, 2022
77

I am just beginning with my scala development on the Scala IDE(Eclipse). I am trying to create a new project and write a sample hello world program to kick things off. This is my sample program:

object hello {
  def main(args: String) = {
    println("Hello World!");
  }
 }

I am using Java 8. I don't see any errors in the program. However, when I try to run the program, I get an error like this:

Error: Main method not found in class hello, please define the main method as:
   public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application

I am now clueless. Why is it asking me to create a main function with Java syntax? And why is it throwing an error when there are no problems with the code(As far as I know)? I tried searching for answers on the existing questions but none of them are about scala development.

Any help would be appreciated. Thank you.

Answers

There are 4 suggested solutions here and each one has been listed below with a detailed description. The following topics have been covered briefly such as Java, Ide, Scala, Eclipse, Scala Ide. These have been categorized in sections for a clear and precise explanation.

45

Your main must take an array of string. It currently takes a single string

From scala's official website :

object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello, world!")
  }
}

https://www.scala-lang.org/documentation/getting-started.html

Also, make sure you are using the "run as Scala application" option in Eclipse.


42

This may not help each and everyone, But I did face the same issue, I cleaned the project and it worked!!!


40

In my case (Intellij Ultimate 2018.1), I had a test with the same name than the object with the main method:

  • src/main/scala/com/xx/xx/MyApp
  • src/test/scala/com/xx/xx/MyApp

when tried to dun main...MyApp failed with the exception in this question.

Just renamed src/test/scala/com/xx/xx/MyApp to MyAppTest


23

In my case I had both a companion object and a class with the same name, which is normally okay in Scala but appears to have confused Java.

Renaming either the object or class to a different name solved the problem.