У меня есть этот код (scala 2.9.1):
package pl.koziolekweb.scala.dsi
import scala.tools.nsc.interpreter.{ IMain, Results }
trait Eval {
def eval(expresion: String): Option[Any] = {
val interpreter = new IMain {
override protected def parentClassLoader: ClassLoader = App.getClass.getClassLoader
}
val res = new ResultSet
interpreter.beQuietDuring {
interpreter.bind("res", res.getClass.getCanonicalName, res)
interpreter.interpret("res.value = " + expresion)
} match {
case Results.Success => Option(res.value)
case _ => None;
}
}
}
object App extends Eval {
def main(args: Array[String]) {
{ eval(args(0)) } match {
case None => println("nie bangla")
case Some(x) => println(x)
}
}
}
class ResultSet {
var value : Any = null
}
, когда я компилирую его (maven) и запускаю просто вызов:
scala pl.koziolekweb.scala.dsi.App 1+1
программа отлично работает (печать 2).Но после того, как упаковать все файлы классов в jar и попытаться запустить
scala myapp.jar 1+1
, я получу
<console>:5: error: not found: value pl
var value: pl.koziolekweb.scala.dsi.ResultSet = _
^
<console>:6: error: not found: value pl
def set(x: Any) = value = x.asInstanceOf[pl.koziolekweb.scala.dsi.ResultSet]
^
<console>:7: error: not found: value res
res.value = 1+1
^
nie bangla
Почему?какие-либо предложения?
// edit:
Я нахожу причину.у интерпретатора нет myapp.jar
в пути к классам.Как загрузить эту банку в IMain?