Scala: Import von Klassen funktioniert mit Version 2.8.0 nicht, wenn

man Scala 2.8.0 auf den Rechner kopiert hat und den Klassenpfad nicht entsprechend setzt – jedenfalls ist das meine Vermutung. Der Reihe nach:

– JEdit macht sich prima, aber die Farben der Syntax-Hervorhebung im Editor – grausig. Ich ermüdete sehr schnell. Die Rettung ist das PlugIn „Editor Scheme Selector“ Das MUSS man einfach haben! Es zeigt einem (nachzählen) 25 verschiedene, geschmackvolle Farbschemas für den Editor an. Es sind welche mit hellem und dunklem Hintergrund darunter. Mein Lieblingsschema heißt „Dessert“.

– Ich habe mir auch das Console-PlugIn (nebst 10 anderen, wie Hex Edit, JDiff PlugIn, SVN PlugIn, Whitespace u.a.) installiert. Damit kann ich die gerade offene Datei kompilieren.

Leider habe ich als Pfad zum Scala-Kompiler ein Verzeichnis angegeben, in das ich Scala-2.8.0 entpackt hatte. Die Folge war, dass ich ich nur noch Klassen kompilieren konnte, die keine anderen Klassen importierten! Ich habe den Fehler natürlich ewig in meinem Code gesucht, bis ich die richtige Idee hatte. Ich benutze seitdem wieder den Scala-2.7.7-Kompiler aus den Ubuntu-Repositories und Klassen mit import (lokaler Klassen) kompilieren wieder fehlerfrei.

Nun kann ich eine shell öffnen und los kompilieren:

– in das Verzeichnis „src“ wechseln (man sollte die Quellcodedateien getrennt von den kompilierte Dateien, den sog, binaries halten, daher der Ordner „src“. Auf derselben Ebene sollte es einen Ordner „bin“ geben.)

– „scalac -d ../bin pfad.zu.meiner.Klasse.meineKlasse.scala“ aufrufen

Mit dem PlugIn Console könnte ich auch direkt aus JEdit heraus kompilieren, würden dem unter (Ubuntu-)Linux nicht drei ernste Problem mit dem Scala-Toolkit für JEdit im Weg stehen:

(1) Der vorgegebene Pfad zum Scala-Kompiler (und zum Interpreter) ist für Nicht-Windowssysteme „/usr/local/scala“ – Auf Ubuntu ist Scala unter /usr/bin/ installiert (und auf anderen Linuxen bestimmt auch). Dieser Pfad kann durch die Variable $SCALA_HOME überschrieben werden aber durch (3) wird aus „/usr/bin“ immer „/usr/bin/bin“!

(2) scalac und scala werden mit der Option -classpath aufgerufen, wenn in der Maske (die sich nach Rechtsklick auf den Editor und „Compile Current Buffer …“ öffnet) im Feld „Classpath“ ein Pfad eingetragen ist. Diese Option sorgte bei mir dafür, dass das Kompilieren mit einem Fehler endete. Und es ist immer ein Pfad eingetragen, wenn man die Maske aufruft. Also müsste ich dieses Feld immer leeren.

(3) an den Pfad zum Scala-Kompiler wird für Nicht-Windowssysteme immer „/bin“ angehangen

Ich habe also in den Dateien scala.xml und scalac.xml aus dem Ordner „scala-2.8.0.final.zip/misc/scala-tool-support/jedit/console/commando“ folgende Zeilen geändert (Zeilennummern wie scalac.xml, scala.xml enthält diesselben Zeilen, die genauso zu ändern sind):

(1) Zeile 44

war value = (isWin32) ? "c:\\\\Progra~1\\Scala" : "/usr/local/scala";

ist value = (isWin32) ? "c:\\\\Progra~1\\Scala" : "/usr/bin";

(2) Zeile 53

war <DIR_ENTRY LABEL="Class path" VARNAME="classpath" EVAL='buffer.getDirectory()'/>

ist <DIR_ENTRY LABEL="Class path" VARNAME="classpath"/>

(3) Zeile 60

war if (home.length() > 0) buf.append(home + File.separator + "bin" + File.separator);

ist if (home.length() > 0) buf.append(home + File.separator);

Jetzt passt alles: Rechtsklick –> Compile Current Buffer:

Scala Home Path = „/usr/bin“

Source File(s) = die gerade offene Datei

Class Path = leer

Output Directory = das zuletzt gewählte Verzeichnis

Jetzt „OK“ klicken und schon öffnet sich eine shell in der ich mir das Ergebnis in Ruhe ansehen kann…

Veröffentlicht in JEdit, Scala. Kommentare deaktiviert für Scala: Import von Klassen funktioniert mit Version 2.8.0 nicht, wenn
%d Bloggern gefällt das: