2014-11-02 80 views
4

我有一個名爲Gui.scala的GUI類,Eclipse不直接在scala文件中顯示任何錯誤。我的Scala版本是2.11,我已經手動將scala-swing-2.10.4.jar添加到Eclipse中的構建路徑中。如果我不這樣做,Eclipse會抱怨它找不到Swing庫。我的源代碼與Swing相關的Scala NoClassDefFoundError

第一行是這樣的:

package filmreviews 
import scala.swing._ 
import event._ 
import javax.imageio.ImageIO 
import javax.swing.ImageIcon 
import java.io.File 
import java.awt.image.BufferedImage 
import java.net.URI 
import java.net.URL 
import java.awt.Desktop 
import java.awt.Cursor 
import java.awt.Color 
import javax.swing.border 
import javax.swing.BorderFactory 
import javax.swing.UIManager 
object Gui extends SimpleSwingApplication { 
    def top = new MainFrame { 
     ...more code here... 

我得到以下錯誤:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: scala/collection/GenTraversableOnce$class 

此外,還有一個長長的清單,告訴其中代碼中的錯誤發生。只提到我自己的代碼的行是:

at filmreviews.Gui$$anon$3.<init>(Gui.scala:17) 
at filmreviews.Gui$.top(Gui.scala:17) 
at filmreviews.Gui$.top(Gui.scala:16) 

這就是爲什麼我認爲它與創建MainFrame對象有關。它也可能與我如何手動將Swing庫添加到構建路徑有關。但是,我不知道是什麼原因導致錯誤或如何修復它。

+1

我看來像斯卡拉集合庫是不是在你的類路徑中。你確定scala-runtime jar文件是你類路徑的一部分嗎? – 2014-11-02 15:26:39

+0

感謝您的建議!不過,另一個答案解決了這個問題。在我的類路徑中,它讀取「Scala庫容器[2.11.4]」和「JRE系統庫[JavaSE-1.7]」在Bootstrap Entries下。據我的理解,這意味着scala-runtime是我的類路徑的一部分。 – 2014-11-02 15:37:08

回答

7

如果您使用的是Scala 2.11,您將需要爲2.11構建的scala-swing版本。 2.10.4與2.11是二進制不兼容的。

您可以在maven central上找到與2.11兼容版本的罐子。

或爲那些使用SBT:

libraryDependencies += "org.scala-lang.modules" %% "scala-swing" % "1.0.1"