2015-01-17 21 views
10

Sono in grado di compilare programmi scala utilizzando scalac in terminale ma ottengo l'avviso.È possibile compilare programmi Scala ma non è possibile eseguirli

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

Si tratta di .profile su scala. Sono abbastanza confuso su ciò che sta accadendo. Molte grazie

risposta

21

In genere la directory non si trova nel classpath per impostazione predefinita. Quindi è necessario dare esplicitamente:

$ scala -cp . HelloWorld 
+0

Grazie mille. – Mark

+0

Immagino che sia una cosa specifica per Mac? Il classpath include sicuramente la directory corrente sotto Linux. C'è qualcosa di diverso nello script di shell specifico per Mac? (Java lo fa in modo diverso?) –

+0

Dipende dalla configurazione di Java. Credo che a volte lo contenga di default, a volte no. – sjrd

3

Il problema è che è stata impostata la variabile d'ambiente CLASSPATH.

Da > man scalac:

Il percorso classe predefinita è la directory corrente. L'impostazione della variabile CLASSPATH o l'opzione della riga di comando -classpath sovrascrive quella predefinita, , quindi se si desidera includere la directory corrente nel percorso di ricerca, è necessario includere "." nelle nuove impostazioni.

Quando si ha la variabile stabilita CLASSPATH, Scala non includerà la directory corrente nella sua ricerca, è necessario in modo esplicito aggiungerlo. Questo è il motivo per cui lo scala -cp . HelloWorld funziona.

Per verificare, eseguire echo CLASSPATH e dovrebbe fornire una stringa non vuota. Controlla i tuoi file .bashrc/.zshrc per qualsiasi export CLASSPATH=... e rimuovi queste righe.

0

Anche questo mi stava succedendo, ma penso che la soluzione migliore sia modificare la variabile CLASSPATH in modo da includere la directory corrente oltre a quella già esistente. per esempio.

export CLASSPATH=.:$CLASSPATH

Ora, si può semplicemente utilizzare scala HelloWorld senza che l'argomento aggiuntivo.

Problemi correlati