2017-02-23 68 views
0

我有一個非常簡單的項目,它由一個.scala文件,一個build.sbt文件和一個/lib文件夾組成,其中包含一個.jar。我的scalaVersion設置爲2.10.5(爲了向後兼容),我運行了sbt compile,併爲scala-2.10和scala-swing創建了下載.jars。因此,它似乎是部分工作...scala.swing NoClassDefFoundError

當我做sbt run我得到一個運行時錯誤:

[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) 

目錄結構:

. 
├── 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

回答

0

您的scala版本是2.10.5,因此scala-swing版本應該是scala- swing-2.10.5.jar。所以你應該改變你的build.sbt文件如下圖所示

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

和你不需要的scala-swing-2.9.1.jar在你的lib目錄,因爲你已經宣佈在依賴build.sbt。因此請將其刪除以避免託管和未託管的依賴關係之間發生任何潛在的衝突。

+0

hooray,謝謝你,工作!我實際上已經嘗試讓它們都是2.10.6,但它不起作用,但10.5起作用。我不知道爲什麼,但我現在就拿它。 :) – Xianny

+0

歡迎! .. :) –