Включить файл jar в интерпретатор Scala
Можно ли включить запуск файла jar с интерпретатором Scala?
Мой код работает, когда я компилирую из scalac:
scalac script.scala -classpath *.jar
Но я хотел бы иметь возможность включить файл JAR при запуске переводчика.
7 ответов
В соответствии с исполняемой справкой scala разрешены все опции scalac, поэтому вы можете запустить scala -classpath some.jar
Я только что попробовал, и похоже, что это работает
В scala2.8 вы можете использовать
scala>:jar JarName.jar
добавить банку в путь к классам.
В Scala 2.8.1 это не:jar, а:cp
И в Scala 2.11.7 это не:cp, а:re(quire)
Включить несколько банок в Scala REPL 2.10.0-RC2
scala -classpath my_1st.jar:my_2nd.jar:my_3rd.jar
В моем случае я использую Scala Code Runner версии 2.9.2. и мне пришлось добавить кавычки. Я использую эти файлы JAR:
jdom-b10.jar, rome-0.9.jar
и все идет хорошо с этим:
scala -classpath "*.jar" feedparser.scala
В Scala версии 2.11.6 от scala REPL используют :require
, может быть лучше всего выяснить, используя :help
из REPL
Например:
$ 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.
Scala версия 2.11.5:
Вот пример добавления всех jar-файлов в кеш ivy:
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
Вы также можете создать локальную папку со всеми банками, которые нужно добавить, и добавить ее аналогичным образом.
Надеюсь это поможет.
"lib/*.jar" генерирует список с пустыми значениями между элементами, а не ":" или ";" как требуется. Поскольку Java 6 "lib/*" должна работать, но иногда нет (путь к классам установлен где-то еще)
Я использую скрипт как:
Окна:
@rem all *.jars in lib subdirectory @echo off set clp=. for %%c in (lib\*.jar) do call :Setclasspath %%c echo The classpath is %clp% scala -classpath %clp% script.scala exit /B %ERRORLEVEL% :Setclasspath set clp=%clp%;%~1 exit /B 0
Linux:
#!/bin/bash #all *.jars in lib subdirectory clp="." for file in lib/* do clp="$clp:$file" done echo $clp scala -classpath $clp script.scala