2013-01-19 20 views
13

Voglio mappare i caratteri in una stringa, ma ricevo errori di runtime.Perché ottengo java.lang.NoClassDefFoundError quando provo a eseguire questo codice?

Esempio:

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 
+6

Non ha nulla con la mappatura, avete avuto problemi con il tuo percorso di classe. Se esegui il tuo codice con il comando 'java', aggiungi scala-library.jar a cp -java non sa nulla di scala e dei suoi bit. In alternativa, esegui il codice con il comando 'scala'. –

+6

Esegui il tuo programma con 'scala Hello' invece di' java Hello'. – Jesper

+0

@Jesper Grazie! – mcandre

risposta

7

Credo che il problema è che libreria Scala non è nel classpath runtime. è necessario aggiungere manualmente manualmente.

Se si utilizzano strumenti come Maven o SBT, è possibile che la dipendenza sia contrassegnata come fornita, anziché compilata.

Se non si utilizza questi strumenti, aggiungere "scala-library.jar" nella directory di libreria

0

vedere anche questo problema perché non ho la giusta versione di Scala. Per coloro che utilizzano IntelliJ, è possibile aggiungere/modificare l'SDK Scala sotto File>strutture di progetto>Biblioteche globali:

enter image description here

Se si compila e in esecuzione il progetto in linea di comando , assicurati di aver installato anche la versione corretta di Scala. ad esempio:

Controllare la versione installata Scala:

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

Controllare il build.sbt di avere la giusta versione di Scala:

scalaVersion := "2.11.8" 
Problemi correlati