web-dev-qa-db-fra.com

Pourquoi ai-je Java.lang.NoClassDefFoundError lorsque j'essaie d'exécuter ce code?

Je souhaite mapper les caractères d'une chaîne, mais des erreurs d'exécution se produisent.

Exemple:

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
14
mcandre

Je pense que votre problème est que la bibliothèque scala ne se trouve pas dans votre classpath d’exécution. vous devez ajouter manuellement.

Si vous utilisez des outils tels que maven ou sbt, peut-être que la dépendance est marquée comme fournie plutôt que compilée.

Si vous n'utilisez pas ces outils, ajoutez "scala-library.jar" à votre répertoire de bibliothèque.

8
fhuertas

Voir aussi ce problème parce que je n'ai pas la bonne version de Scala. Pour ceux qui utilisent IntelliJ, vous pouvez ajouter/modifier le SDK scala sous Fichier > Structures de projet > Bibliothèques globales :

 enter image description here

Si vous compilez et exécutez votre projet en ligne de commande, assurez-vous également d'avoir la bonne version de Scala. par exemple.:

Vérifiez la version de Scala installée:

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

Cochez build.sbt pour avoir la bonne version de Scala:

scalaVersion := "2.11.8"
3
Yuchen Zhong