2015-01-17 12 views
10

Ich bin in der Lage, Scala-Programme mit Hilfe von scalac in Terminal zu kompilieren, aber ich bekomme die Warnung.Kann Scala-Programme kompilieren, aber kann sie nicht ausführen

Charless-Macintosh:src Charles$ scalac hello.scala 
Charless-Macintosh:src Charles$ scala HelloWorld 
No such file or class on classpath: HelloWorld 

Ist dies mit .profile auf scala zu tun. Ich bin ziemlich verwirrt, was passiert. Vielen Dank

Antwort

21

Das aktuelle Verzeichnis ist standardmäßig nicht im Klassenpfad enthalten. Sie müssen also explizit geben:

$ scala -cp . HelloWorld 
+0

Vielen Dank. – Mark

+0

Ich denke, das ist eine Mac-spezifische Sache? Der Klassenpfad enthält definitiv das aktuelle Verzeichnis unter Linux. Gibt es etwas anderes an dem Mac-spezifischen Shell-Skript? (Tut es Java selbst anders?) –

+0

Es hängt von Ihrem Java-Setup ab. Ich glaube manchmal enthält es es standardmäßig, manchmal nicht. – sjrd

3

Das Problem ist, dass Sie die CLASSPATH Umgebungsvariable gesetzt haben.

Von > man scalac:

Der Standardklassenpfad ist das aktuelle Verzeichnis. Wenn Sie die CLASSPATH-Variable setzen oder die Befehlszeilenoption -classpath verwenden, überschreiben Sie die Standardeinstellung . Wenn Sie also das aktuelle Verzeichnis in den Suchpfad aufnehmen möchten, müssen Sie "." in den neuen Einstellungen.

Wenn Sie die CLASSPATH Variable gesetzt haben, scala wird nicht das aktuelle Verzeichnis auf der Suche sind, Sie explizit hinzufügen. Deshalb funktioniert scala -cp . HelloWorld.

Um zu überprüfen, führen Sie echo CLASSPATH und es sollte einige nicht leere Zeichenfolge geben. Überprüfen Sie Ihre .bashrc/.zshrc Dateien für alle export CLASSPATH=... und entfernen Sie diese Zeilen.

0

Dies geschah auch mit mir, aber ich denke, die bessere Lösung ist die CLASSPATH Variable zu ändern, um das aktuelle Verzeichnis zusätzlich zu dem, was Sie bereits hatten, zu enthalten. z.B.

export CLASSPATH=.:$CLASSPATH

Jetzt können Sie einfach scala HelloWorld ohne dass zusätzliches Argument verwenden.

Verwandte Themen