2013-08-03 13 views
7

Se io edizione:non possono aggiungere un vasetto di scala repl con il comando: cp

$ scala -classpath poi-3.9/poi-3.9-20121203.jar 

scala> import org.apache.poi.hssf.usermodel.HSSFSheet 
import org.apache.poi.hssf.usermodel.HSSFSheet 

Tutto funziona bene, ma se invece mi emettere:

$ scala 

scala> :cp poi-3.9/poi-3.9-20121203.jar 
Added '/home/sas/tmp/poi/poi-3.9/poi-3.9-20121203.jar'. Your new classpath is: 
".:/home/sas/tmp/poi/poi-3.9/poi-3.9-20121203.jar" 
Nothing to replay. 

scala> import org.apache.poi.hssf.usermodel.HSSFSheet 
<console>:7: error: object apache is not a member of package org 
     import org.apache.poi.hssf.usermodel.HSSFSheet 
       ^

Mi sto perdendo qualcosa?

+0

quale versione di Scala stai usando? – gourlaysama

+4

Apparentemente questo è un problema noto. Non funziona più con Scala 2.10+: [SI-6502] (https://issues.scala-lang.org/browse/SI-6502). – gourlaysama

+0

utilizzando la versione runner di Scala codice 2.10.1 - Copyright 2002-2013, LAMP/EPFL – opensas

risposta

0

Un altro modo per importare i file jar, in questo caso, per impostazione predefinita, è aggiungere collegamenti in $ SCALA_HOME/lib ai file jar di interesse. Quindi, ogni volta che si inserisce REPL, tali jar collegati verranno caricati.

Per esempio, per poi-3.9-20121203.jar, considerare

(cd $SCALA_HOME/lib && ln -s full_path_to_poi_jar/poi-3.9-20121203.jar) 
0

Come notato nei commenti, questo è un problema noto. È possibile utilizzare un'implementazione REPL alternativa come Ammonite.

4

nessuno sembra ricordare questo, ma la soluzione corretta sta usando il :require command:

scala> :require foo.jar 
Added 'foo.jar' to classpath. 
+0

Questa dovrebbe essere la risposta accettata in quanto non è necessario un sostituto alternativo o variabili variabili di ambiente. Funziona proprio come: cp, grazie per l'aiuto. – faizan