Включить файл jar в интерпретатор Scala - PullRequest
23 голосов
/ 10 ноября 2009

Можно ли включить запуск файла jar с интерпретатором Scala?

Мой код работает, когда я компилирую из scalac:

scalac script.scala -classpath *.jar

Но я бы хотел иметь возможность включить файл jar при запуске интерпретатора.

Ответы [ 7 ]

26 голосов
/ 10 ноября 2009

В scala2.8 вы можете использовать

scala>:jar JarName.jar

чтобы добавить банку в путь к классам.

В Scala 2.8.1 это не: jar, а: cp

А в Scala 2.11.7 это не: cp, а: re (quire)

19 голосов
/ 10 ноября 2009

В соответствии с исполняемой справкой scala разрешены все опции скаляка, так что вы можете запустить scala -classpath some.jar, я только что попробовал, и, похоже, работает

5 голосов
/ 25 ноября 2012

Включить несколько jar-файлов в Scala REPL 2.10.0-RC2

scala -classpath my_1st.jar:my_2nd.jar:my_3rd.jar
2 голосов
/ 25 июня 2015

В 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.
2 голосов
/ 18 мая 2012

в моем случае я использую Scala Code Runner версии 2.9.2. и мне пришлось добавить кавычки. Я использую следующие файлы jar:

jdom-b10.jar, Рим-0.9.jar

и все идет хорошо с этим:

scala -classpath "*.jar" feedparser.scala
1 голос
/ 19 декабря 2015

версия 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

Вы также можете создать локальную папку со всеми банками, которые нужно добавить, и добавить ее аналогичным образом.

Надеюсь, это поможет.

0 голосов
/ 13 января 2019

"lib / *. Jar" генерирует список с пробелом между элементами, а не ":" или ";" как требуется. Поскольку Java 6 «lib / *» должна работать, но иногда нет (путь к классам установлен где-то еще)

Я использую скрипт вроде:

  1. Windows

    @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
    
  2. 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
    
...