Включить файл 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/*" должна работать, но иногда нет (путь к классам установлен где-то еще)

Я использую скрипт как:

  1. Окна:

    @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
    
Другие вопросы по тегам