2013-01-19 30 views
13

Chcę mapować znaki w ciągu znaków, ale dostaję błędy w czasie wykonywania.Dlaczego otrzymuję komunikat java.lang.NoClassDefFoundError podczas próby uruchomienia tego kodu?

Przykład:

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

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

Ślad:

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

To nie ma nic wspólnego z mapowaniem, miałeś problemy z twoja ścieżka do zajęć. Jeśli uruchamiasz swój kod za pomocą komendy 'java', dodaj scala-library.jar do cp - java nie wie nic o scala i jego bitach. Alternatywnie uruchom kod za pomocą komendy 'scala'. –

+6

Uruchom swój program za pomocą 'scala Hello' zamiast' java Hello'. – Jesper

+0

@Jesper Dzięki! – mcandre

Odpowiedz

7

Myślę, że problemem jest to, że biblioteka nie jest scala w ścieżce klas wykonawczego. musisz ręcznie dodać ręcznie.

Jeśli używasz narzędzi takich jak maven lub sbt, być może zależność jest oznaczona jako dostarczona zamiast skompilowana.

Jeśli użytkownik nie korzysta z tych narzędzi, należy dodać „scala-library.jar” do katalogu biblioteki

0

widząc również ten problem, bo nie mam odpowiedniej wersji Scala. Dla tych, którzy są przy użyciu IntelliJ, można dodać/zmienić SDK scala pod Plik>struktur projektu>Globalne Biblioteki:

enter image description here

Jeśli skompilowanie i uruchomienie projektu w wierszu poleceń , upewnij się, że masz zainstalowaną odpowiednią wersję Scala. np:

Sprawdź zainstalowana wersja Scala:

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

Sprawdź build.sbt mieć odpowiednią wersję Scala:

scalaVersion := "2.11.8" 
Powiązane problemy