Abhilash D K
Abhilash D K

Reputation: 1309

Scala sbt NullPointerException

I am new to Scala and SBT. I am getting NullPointerException please help.

.profile

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export PYSPARK_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
export SPARK_HOME=/Softwares/spark
export R="/Library/Frameworks/R.framework/Resources"
export PATH=$PATH:$PYSPARK_PYTHON:$SPARK_HOME:$R

which scala

/usr/local/bin/scala

scala -version

cat: /release: No such file or directory
Scala code runner version 2.12.1 -- Copyright 2002-2016, LAMP/EPFL and Lightbend, Inc.

which sbt

/usr/local/bin/sbt

sbt about This is sbt 0.13.13

I have created a folder FirstScala/src/main/First/First.scala containing the following

object First
{
    def main(args:Array[String]) {
        println("First Scala Hello World");
    }
}

build.sbt

name := "first_scala"

version := "1.0"

scalaVersion := "2.12.1"

Now in FirstScala folder I run sbt package. The .jar file gets generated. But when I run

scala target/scala-2.12/first_scala_2.12-1.0.jar 

I get the following error

java.lang.NullPointerException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at scala.reflect.internal.util.ScalaClassLoader.$anonfun$tryClass$1(ScalaClassLoader.scala:44)
at scala.util.control.Exception$Catch.$anonfun$opt$1(Exception.scala:242)
at scala.util.control.Exception$Catch.apply(Exception.scala:224)
at scala.util.control.Exception$Catch.opt(Exception.scala:242)
at scala.reflect.internal.util.ScalaClassLoader.tryClass(ScalaClassLoader.scala:44)
at scala.reflect.internal.util.ScalaClassLoader.tryToInitializeClass(ScalaClassLoader.scala:40)
at scala.reflect.internal.util.ScalaClassLoader.tryToInitializeClass$(ScalaClassLoader.scala:40)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.tryToInitializeClass(ScalaClassLoader.scala:129)
at scala.reflect.internal.util.ScalaClassLoader.run(ScalaClassLoader.scala:91)
at scala.reflect.internal.util.ScalaClassLoader.run$(ScalaClassLoader.scala:90)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:129)
at scala.tools.nsc.CommonRunner.run(ObjectRunner.scala:22)
at scala.tools.nsc.CommonRunner.run$(ObjectRunner.scala:21)
at scala.tools.nsc.JarRunner$.run(MainGenericRunner.scala:13)
at scala.tools.nsc.CommonRunner.runAndCatch(ObjectRunner.scala:29)
at scala.tools.nsc.CommonRunner.runAndCatch$(ObjectRunner.scala:28)
at scala.tools.nsc.JarRunner$.runAndCatch(MainGenericRunner.scala:13)
at scala.tools.nsc.JarRunner$.runJar(MainGenericRunner.scala:25)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:65)
at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:88)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:99)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:104)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)

Thanks in Advance.

Upvotes: 0

Views: 4737

Answers (2)

Milan Rakos
Milan Rakos

Reputation: 1763

export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"

Upvotes: 4

radumanolescu
radumanolescu

Reputation: 4161

  1. Change the directory structure so you have src/main/scala/First.scala, because by default sbt expects this directory structure.
  2. You need to specify the classpath and the name of the object to run (First).
  3. Run your project using sbt:

    sbt run
    [info] Loading global plugins from /dev/sw/.sbt/0.13/plugins
    [info] Set current project to first_scala (in build file:/dev/FirstScala/)
    [info] Running First
    First Scala Hello World
    [success] Total time: 0 s, completed Mar 21, 2017 2:33:29 PM
    

See an example of running the JAR using Java at http://alvinalexander.com/scala/how-to-run-scala-sbt-packaged-jar-file-with-java-command

You can also run the JAR using Scala, but you still need to specify the classpath and object name: http://alvinalexander.com/scala/how-to-run-scala-application-jar-files-set-classpath

Upvotes: 2

Related Questions