Почему я пытаюсь запустить java.lang.NoClassDefFoundError при запуске этого кода?

Я хочу сопоставить символы в строке, но я получаю ошибки во время выполнения.

Пример:

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

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

Трассировка:

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

Ответ 1

Я думаю, что ваша проблема в том, что библиотека scala не находится в вашем пути к среде выполнения. вы должны вручную добавить вручную.

Если вы используете такие инструменты, как maven или sbt, возможно, зависимость помечена как предоставленная, а не скомпилированная.

Если вы не используете эти инструменты, добавьте "scala-library.jar" в свою библиотечную директорию

Ответ 2

Также видя эту проблему, потому что у меня нет правильной версии Scala. Для тех, кто использует IntelliJ, вы можете добавить/изменить SDK scala в разделе " Файл" > " Структуры проектов" > " Глобальные библиотеки":

enter image description here

Если вы компилируете и запускаете свой проект в командной строке, убедитесь, что у вас установлена правильная версия Scala. например:

Проверьте версию Scala:

$ scala -version
Scala code runner version 2.11.8 -- Copyright 2002-2016, LAMP/EPFL

Проверьте build.sbt на правильную версию Scala:

scalaVersion := "2.11.8"