Scala mit Eclipse#
Seit der Version 2.9.x gibt es für Scala auch ein Plugin für Eclipse, das wirklich brauchbar ist. Die Installation scheint sich dabei noch zu verändern. Beim ersten Mal musste ich eine zip-datei herunterladen und es local installieren. Heute (24.11.2011) klappte es mit der folgenden BeschreibungDie Seite auf der man die URL der Update Site findet, lautet http://www.scala-ide.org/.
Mittig oben findet man rot unterlegt einen Button mit dem Text copy update site URL to clipboard. Drückt man diesen kann man in Eclipse -> Help -> Install New Software... :: add.. in das Eingabefeld location die URL kopieren. Einen Namen muss man noch angeben und dann gehts los. Falls man das JDT Weaving schon installiert hat, darf man es nicht noch einmal mit installieren. Nach der Installation muss Eclipse neu gestartet werden.
Man sollte auch die Eclipse.ini nach Anweisung der Seite ändern. Man findet die Angaben unter https://www.assembla.com/wiki/show/scala-ide/Setup oder von der oben genannten Seite inden man mittig aber fast ganz unten im gleichen Kasten User documentation drückt und in der anschließenden Seite Setup drückt.
Besonderheiten#
Man sollte für Scala ein eigenes Eclipse einrichten, denn viele der Einstellunge wirken sich auch auf java-Dateien aus, was besonders bei Javadoc zu Unstimmigkeiten führt. Ich habe auch ausprobiert, ob eine mit Scala geschriebene Anwendung unsere Lugframework nutzen kann. Dies ist mit einer Einschränkung mit einem klaren Ja zu beantworten. Die Einschränkung sind die drei statischen 'launch'-Methoden. Dies liegt daran, das Scala 'static' nicht kennt, man dies mit 'object' wrappen muss und Scala dabei den Konstruktor der Anwendung als 'private' deklariert (und das obgleich ohne besondere Deklaration eigentlich alles in Scala 'public' ist). Man muss also eine der gewünschten 'launch'-Methoden in der Methode 'main' vereinfacht nach programmieren. Das klappt dann aber selbst mit SplashScreen ohne Probleme. Folgendes war meine Kopie:class Startfenster extends Anwendung { override val getAnwendungstitel = "Scalatester" override def hochfahren { hauptfenster = new Hauptfenster( "Test" ) super.hochfahren } override def getHauptfenster = hauptfenster } object Startfenster { def main( args: Array[String] ) = { val url: URL = ClassLoader.getSystemResource( "appx.png" ) SplashScreen.open( url, 1 ) val start = new Startfenster start hochfahren; //Semikolon ist hier notwendig, da kein Parameter folgt SplashScreen.close start.getHauptfenster setVisible true } } class Hauptfenster( titel: String ) { ... }
Selbst unsere annotierte Methoden und annotierte Klassen funktionieren. Ein Wermutstropfen ist bei den annotierten Klassen, dass der XML-String hintereinander geschrieben werden muss und nicht durch mit + verbundene Stringliterale strukturiert werden kann. Dies schein der Scalaoptimierer nicht zu können.
Noch eine Besonderheit ist, dass mit Scala nur kompilierte class-Dateien in den Ordner bin gespeichert werden. Bild-, Ikon- und Textdateien werden nicht aus dem Ordner src/ in den Ordner bin/ kopiert. Das muss man von Hand selber machen. Ruft man aber Project -> Clean.. auf, sind sie wieder verschwunden. Auch diese Besonderheit scheint beseitigt zu sein. Bei mir(Kai Ehlers) wird es jetzt von src nach bin kopiert beim Bauen eines Projektes.