Using Java libraries in Scala

31,453

Solution 1

In your example, you just have a main, not a function you would necessarily call from somewhere else. But let's said you did have a function like

package com.example.hello;

public class HelloWorld {
  public static void sayHello() {
    System.out.println("Hello, world!");
  }
}

(I also added a package for your example, for completeness). Then in your Scala code, you could do:

import com.example.hello._

object GreetWorld extends App {
  (0 until 10).foreach {
    HelloWorld.sayHello()
  }
}

to say hello using the Java function 10 times in Scala. The ._ in the import imports all members of the package, or alternatively you could just import com.example.hello.HelloWorld. You could even import the method itself with import com.example.hello.HelloWorld.sayHello so that you don't need to reference the HelloWorld object in your code.

Both languages compile into JVM bytecode, so calling Java code from Scala is very simple, although calling Scala from Java can be trickier if there are are implicit parameters involved.

Solution 2

The equivalent code would be:

object HelloWorld extends App {
  println("Hello, world!")
}

If you saved that code in a file called HelloWorld.scala then you could compile and run it like so:

$ scalac HelloWorld.scala

$ scala HelloWorld
Hello, world!

Or if you are working in the REPL:

scala> :paste
// Entering paste mode (ctrl-D to finish)

object HelloWorld extends App {
  println("Hello, world!")
}

// Exiting paste mode, now interpreting.

defined module HelloWorld

scala> HelloWorld.main(Array.empty[String])
Hello, world!

Solution 3

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

}

or

object HelloWorld extends App {
  println("Hello, world!")
}
Share:
31,453

Related videos on Youtube

frazman
Author by

frazman

Updated on February 18, 2021

Comments

  • frazman
    frazman about 3 years

    I am new to Scala. I am only able to write basic code thus far, but I want to start using it more concretely, rather than just learning theory.

    Let's say I have the following Java code in HelloWorld.java:

    public class HelloWorld {
    
        public static void main(String[] args) {
            System.out.println("Hello, World");
        }
    
    }
    

    What would the code be to invoke it from Scala?

    • frazman
      frazman about 11 years
      @Reimeus: No.. I want to call HelloWorld function from scala?
  • frazman
    frazman about 11 years
    THanks .. this is what i needed :)
  • frazman
    frazman about 11 years
    Hi, May I request you to please write the code completely.. I am very new to scala.. My scala codeblock is inside the "object" definition.. and rest of the stuff is same.. Does scala and java files should be in same folder??
  • frazman
    frazman about 11 years
    I am getting this error : helloworld.scl:1: error: object example is not a member of package com import com.example.hello
  • Luigi Plinge
    Luigi Plinge about 11 years
    @Fraz if you still have the problem, see changes above
  • sam boosalis
    sam boosalis about 10 years
    (0 to 10) is 11 times, not 10. the range is inclusive.
  • Davos
    Davos almost 7 years
    Maybe the code was updated, but it says 0 until 10, not 0 to 10, and until is not inclusive.
  • Gautam
    Gautam about 5 years
    @samboosalis was in a hurry it seems. Didn't read it right. No, the code hasn't been modified since the answer was posted.
  • Xin Cheng
    Xin Cheng over 2 years
    @frazman you need compile java files first. i.e. javac ./com/example/hello/HelloWorld.java.
  • Aldo Saucedo
    Aldo Saucedo about 2 years
    Does anyone knows if this sample works in Databricks Notebooks? I mean, having a JAR File attached to a cluster and call java classes inside that JAR from Scala Notebook. Thanks!