2017-02-23 3 views
0

J'ai un projet très simple qui se compose d'un fichier .scala, un fichier build.sbt, et un dossier /lib avec un seul .jar en elle. Ma scalaVersion est définie sur 2.10.5 (pour la rétrocompatibilité) et j'ai exécuté sbt compile, et sbt télécharge .jars pour scala-2.10 et scala-swing. Il semble donc que cette partie travaille ...scala.swing NoClassDefFoundError

Quand je sbt run je reçois une erreur d'exécution:

[info] Running GuiProgramOne 
[error] (run-main-0) java.lang.NoClassDefFoundError: scala/collection/GenTraversableLike$class 
java.lang.NoClassDefFoundError: scala/collection/GenTraversableLike$class 
    at scala.swing.RefSet.<init>(Publisher.scala:167) 
    at scala.swing.Publisher$$anon$1.<init>(Publisher.scala:34) 
    at scala.swing.Publisher$class.$init$(Publisher.scala:34) 
    at scala.swing.Window.<init>(Window.scala:25) 
    at scala.swing.Frame.<init>(RichWindow.scala:77) 
    at scala.swing.MainFrame.<init>(MainFrame.scala:19) 
    at UI.<init>(UI.scala:3) 
    at GuiProgramOne$.main(UI.scala:11) 
    at GuiProgramOne.main(UI.scala) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
Caused by: java.lang.ClassNotFoundException: scala.collection.GenTraversableLike$class 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at scala.swing.RefSet.<init>(Publisher.scala:167) 
    at scala.swing.Publisher$$anon$1.<init>(Publisher.scala:34) 
    at scala.swing.Publisher$class.$init$(Publisher.scala:34) 
    at scala.swing.Window.<init>(Window.scala:25) 
    at scala.swing.Frame.<init>(RichWindow.scala:77) 
    at scala.swing.MainFrame.<init>(MainFrame.scala:19) 
    at UI.<init>(UI.scala:3) 
    at GuiProgramOne$.main(UI.scala:11) 
    at GuiProgramOne.main(UI.scala) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
[trace] Stack trace suppressed: run last compile:run for the full output. 
java.lang.RuntimeException: Nonzero exit code: 1 
    at scala.sys.package$.error(package.scala:27) 

Structure du répertoire:

. 
├── build.sbt 
├── GUI.class 
├── GUI$.class 
├── lib 
│   └── scala-swing-2.9.1.jar 
├── project 
│   └── target 
│    └── config-classes 
│     ... 
├── target 
│   └── streams 
│    ... 
└── GUI.scala 

build.sbt:

lazy val root = (project in file(".")). 
    settings(
    inThisBuild(List(
     scalaVersion := "2.10.5" 
    )), 
    name := "Game of Life", 
    libraryDependencies ++= Seq(
     "org.scala-lang" % "scala-swing" % "2.9.1" 
    ) 
) 

code: http://otfried.org/scala/index_28.html

Répondre

0

votre version scala est 2.10.5 et par conséquent la version scala-swing devrait être scalable - swing-2.10.5.jar. de sorte que vous devez changer votre fichier build.sbt comme indiqué ci-dessous

libraryDependencies ++= Seq(
     "org.scala-lang" % "scala-swing" % scalaVersion.value 
    ) 

et vous ne avez pas besoin du scala-swing-2.9.1.jar dans votre répertoire lib puisque vous déclarant déjà la dépendance à build.sbt. supprimez-le afin d'éviter toute collision potentielle entre les dépendances gérées et non gérées.

+0

hooray, merci, cela a fonctionné !! J'ai effectivement essayé de les faire à la fois 2.10.6 et cela n'a pas fonctionné, mais 10.5 fonctionne. Je ne sais pas pourquoi mais je vais le prendre pour l'instant. :) – Xianny

+0

bienvenue !! .. :) –