2009-11-10 12 views
23

È possibile includere un file jar eseguito eseguendo l'interprete Scala?Include il file jar nell'interprete Scala

Il mio codice funziona quando compilo da scalac:

scalac script.scala -classpath *.jar 

ma vorrei essere in grado di includere un file jar quando si esegue l'interprete.

risposta

19

Secondo aiuto eseguibile scala tutte le opzioni di scalac sono consentiti, in modo da poter eseguire scala -classpath some.jar, ho appena provato e sembra che funziona

24

In scala2.8, è possibile utilizzare

scala>:jar JarName.jar 

per aggiungere un barattolo al classpath.

In Scala 2.8.1, non è così: vaso ma: cp

E a Scala 2.11.7 non è così: cp ma: Re (coro)

+0

fantastico! dove/come l'hai saputo a riguardo? – javadba

+3

Ho provato questo e ottenuto una sorta di messaggio di successo .. ma non ha funzionato. Aggiunto '/shared/spark-core_2.10-0.9.0-incubating-SNAPSHOT.jar'. Il nuovo percorso di classe è: ".:/Shared/spark-core_2.10-0.9.0-incubating-SNAPSHOT.jar". Ma l'importazione non ha funzionato. (NB: ho verificato i lavori di importazione quando aggiungo tramite riga di comando classpath) – javadba

+0

Lo stesso con javadba: l'importazione non funziona quando un jar viene aggiunto a classpath nell'interprete e si avrà un messaggio di errore * "l'oggetto xxx non è un membro del pacchetto yyy "* quando lo fai. – lcn

2

nel mio caso sto usando la versione 2.9.2 corridore di codice Scala. e ho dovuto aggiungere virgolette. Sto usando questo file jar:

JDOM-b10.jar, roma-0.9.jar

e tutto va bene con questo:

scala -classpath "*.jar" feedparser.scala 
5

includere più vasetti int Scala REPL 2.10.0 -RC2

scala -classpath my_1st.jar:my_2nd.jar:my_3rd.jar 
2

In Scala versione 2.11.6 dall'uso Scala REPL :require, può essere meglio capito utilizzando :help da REPL

Ad esempio:

$ scala 
Welcome to Scala version 2.11.6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_45). 
Type in expressions to have them evaluated. 
Type :help for more information. 
scala> :require lift-json_2.11-3.0-M5-1.jar 
Added '<path to lift json library>/lift-json/lift-json_2.11-3.0-M5-1.jar' to classpath. 
0

Scala versione 2.11.5:

Ecco un esempio di aggiunta di tutti i barattoli nella cache edera:

scala -cp /Users/dbysani/.ivy2/cache/org.apache.spark/spark-streaming_2.10/jars/* 

scala> import org.apache.spark.streaming.StreamingContext 
import org.apache.spark.streaming.StreamingContext 

È anche possibile creare un locale cartella di tutti i barattoli necessari per essere aggiunti e aggiungerli in un modo simile.

Spero che questo aiuti.