Monday, January 27, 2014

Scala IDE in Eclipse (with 2.9.x and Juno... or not)

I'm taking the plunge into Scala to determine if it has any benefits over Java. To motivate that, I decided to play around with Spark/Shark against Cassandra. To get my feet wet, I set out to run Spark's example Cassandra test (and perhaps enhance it to use CQL).

First, I needed to get my IDE setup to handle Scala. I'm an Eclipse fan, so I just added in the Scala IDE for Eclipse. (but make sure you get the right scala version! see below!)

Go to Help->Install New Software->Add, and use this url:

http://download.scala-ide.org/sdk/helium/e38/scala210/stable/site

Race through the dialog boxes to install the plugin, which will require you to restart.

For me, I was working with a Java project to which I wanted to add the CassandraTest scala class from Spark. If you are in the same situation, and you have an existing Java project, you will need to add the Scala nature in Eclipse. Do this by right-clicking on the project, then Configure->Add Scala Nature.

At this point, you can start the Scala interpreter by right-clicking on the project, then Scala->Create Scala Interpreter.

I was happy -- for a moment. I was all setup, but Eclipse started complaining that certain jar files were "cross-compiled" using a different version of Scala: an older version, 2.9.x. Unfortunatley, I had Storm in my project, which appeared to be pulling in files compiled with 2.9.x.

So, I uninstalled the Scala IDE plugin because it appeared to work only with 2.10.x. I needed to downgrade to an older version of the Scala IDE to get 2.9.x support. That forced me on to an experimental version of Scala IDE because I needed 2.9.x support in Juno. Unfortunately, after re-installing the old version, I lost the ability to add the Scala nature. =(

PUNT

I decided to go hack it at the command-line. I followed this getting started guide to add Scala to my maven pom file. That worked like a champ. And I could run the CassandraTest.

So, at this point, I'm editing the files in Eclipse, but running via command-line. I'm not sure Scala IDE will bother supporting 2.9.x in Juno or Kepler, because they seemed to have moved on. But if anyone has any idea how to get Scala IDE with 2.9.x support in Juno, I'm all ears. (@jamie_allen, any ideas?)