Why do I get java.lang.NoClassDefFoundError when I trying to run this code?

mcandre picture mcandre · Jan 19, 2013 · Viewed 26.8k times · Source

I want to map over the characters in a string, but I'm getting runtime errors.

Example:

object Hello {
    def hello(c: Char) {
        print(c)
    }

    def main(args: Array[String]) {
        "Hello World!".map(hello)
    }
}

Trace:

scalac Hello.scala
java Hello
Exception in thread "main" java.lang.NoClassDefFoundError: scala/LowPriorityImplicits
    at Hello.main(Hello.scala)
Caused by: java.lang.ClassNotFoundException: scala.LowPriorityImplicits
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 1 more
make: *** [test] Error 1

Answer

fhuertas picture fhuertas · Jan 25, 2016

I think that your problem is that scala library is not in your runtime classpath. you must manually add manually.

If you are using tools like maven or sbt, maybe the dependency is marked as provided instead compiled.

If you are not using these tools, add "scala-library.jar" to your library directory