Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scala NoClassDefFoundError related to Swing

I have a GUI class named Gui.scala and Eclipse does not show any errors directly in the scala file. My Scala version is 2.11 and I have manually added scala-swing-2.10.4.jar to my build path in Eclipse. If I don't do this, Eclipse complains that it does not find the Swing library.

First lines of my source code look like this:

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

I get the following error:

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

Also, there is a long list telling where in code the error happened. Only lines referring to my own code are:

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

This is why I think it is related to the creation of the MainFrame object. It can also be related to how I have manually added the Swing library to the build path. However, I don't know what causes the error or how to fix it.

like image 462
Teemu Leivo Avatar asked Mar 19 '23 00:03

Teemu Leivo


1 Answers

If you're using Scala 2.11, you will need a version of scala-swing built for 2.11. 2.10.4 is binary incompatible with 2.11.

You can find the jar for a 2.11-compatible version on maven central.

Or for those using sbt:

libraryDependencies += "org.scala-lang.modules" %% "scala-swing" % "1.0.1"
like image 171
Michael Zajac Avatar answered Apr 09 '23 10:04

Michael Zajac