Neues Scala-Projekt mit OSGi

Die Scala IDE für Eclipse erlaubt das Entwickeln von Scala-Applikationen in Eclipse. Sie hat aber noch einen weiteren Vorteil: Dank ihr kann man die Programmiersprache auch innerhalb einer OSGi-Umgebung nutzen. Die Sprackbibliothek wird nämlich als OSGi-Bundle zusammen mit der Scala IDE ausgeliefert.

Zunächst muss die Scala IDE installiert werden. Um ein OSGi-Bundle mit Scala-Nature zu erzeugen, muss man in Eclipse dann zuerst ein ganz normales Plugin-Projekt erzeugen. Danach muss man die Scala-Nature hinzufügen, damit der Scala-Quellcode kompiliert werden kann. Dazu klickt man mit der rechten Maustaste im Navigator oder Package Explorer auf das neue Projekt und wählt "Scala/Add Scala Nature". Dadurch werden folgende Einträge in die Datei .project eingefügt:

<buildCommand>
  <name>org.scala-ide.sdt.core.scalabuilder</name>
  <arguments>
  </arguments>
</buildCommand>
<nature>org.scala-ide.sdt.core.scalanature</nature>

Damit die Scala Library genutzt werden kann, muss man in der META-INF/MANIFEST.MF das Bundle org.scala-ide.scala.library als Required Bundle angeben:

Der Scala-Compiler erstellt sodann normalen Java-Bytecode sodass eine vollständige Integration mit Java und OSGi sichergestellt ist. Etwas störend ist die unvollständige Unterstützung von OSGi-Package-Imports der Scala IDE. Wenn man einmal ein Package aus einem Bundle per Import-Package importiert hat, kann man danach auch Klassen aus allen anderen Packages dieses Bundles im Scala-Quellcode importieren. Die IDE zeigt dabei keine Fehler an. Zur Laufzeit kommt es jedoch korrekterweise zu ClassNotFoundExceptions. Man hat somit zwei Möglichkeiten:

  • Auf Require-Bundle statt Import-Package umsteigen, was jedoch nicht empfohlen ist.
  • Nach dem Auftreten der Laufzeitfehler die Packages manuell importieren (erfahrende OSGi-Entwickler kennen diese Vorgehensweise sowieso) und auf eine neue Version der Scala IDE warten.
blog comments powered by Disqus