我有 scala.tools.sbt 的问题
scala file
在这里,我使用解析器功能来制作代码的抽象语法树 2 + 3
import scala.tools.nsc._
object Main extends App {
var i = new Interpreter
println(i.parse("2 + 3"))
}
SBT configuration
name := "scalaSample"
version := "1.0-SNAPSHOT"
scalaVersion := "2.9.1"
libraryDependencies += "org.scalatest" %% "scalatest" % "1.7.1" % "test"
libraryDependencies += "org.scala-lang" % "scala-compiler" % "2.9.1"
Error
无法初始化编译器:找不到对象标量 . **请注意,从2.8开始,scala不会假设使用java类路径 . **对于旧行为,将-usejavacp传递给scala,或者如果以编程方式使用Settings **对象,则settings.usejavacp.value = true . [error](run-main)scala.tools.nsc.CompilationUnits $ CompilationUnit中的java.lang.NullPointerException java.lang.NullPointerException . (CompilationUnits.scala:16)scala.tools.nsc.interpreter.ExprTyper $ codeParser $ .applyRule(ExprTyper.scala:22)at scala.tools.nsc.interpreter.ExprTyper $ codeParser $ .stmts(ExprTyper.scala:36) )scala.tools.nsc.interpreter.ExprTyper $$ anonfun $ parse $ 2.apply(ExprTyper.scala:47)at scala.tools.nsc.interpreter.ExprTyper $$ anonfun $ parse $ 2.apply(ExprTyper.scala:46 )scala.tools.nsc.report上的scala.tools.nsc.reporters.Reporter.withIncompleteHandler(Reporter.scala:46)scala.tools.nsc.interpreter.ExprTyper $ class.parse(ExprTyper.scala:46) . 在eu.semantiq.scalaToJS.Main $ delayedInit $ body.apply(Main.scala)的scala.tools.nsc.interpreter.IMain.parse(IMain.scala:1013)中的IMain $ exprTyper $ .parse(IMain.scala:1012) :7)scala.Function0 $ class.apply $ mcV $ sp(Function0.scala:34)at scala.runtime.AbstractFunction0.apply $ mcV $ sp(AbstractFunction0.scala:12)at scala.App $$ anonfun $ main $ 1.apply(App.scala:60)at scala.App $$ anonfun $ main $ 1.apply(App.scala:60)at scala.collection.LinearSeqOptimized $ class.foreach(Linea rSeqOptimized.scala:59)scala.collection.immutable.List.foreach(List.scala:45)at scala.collection.generic.TraversableForwarder $ class.foreach(TraversableForwarder.scala:30)at scala.App $ class.main (App.scala:60)at eu.semantiq.scalaToJS.Main $ .main(Main.scala:5)at eu.semantiq.scalaToJS.Main.main(Main.scala)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native方法)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:616)java .lang.RuntimeException:非零退出代码:1在scala.sys.package $ .error(package.scala:27)
In scala REPL everything works
欢迎使用Scala版本2.9.0.1(OpenJDK 64位服务器VM,Java 1.6.0_23) . 输入表达式以对其进行评估 . 键入:帮助以获取更多信息 . scala> import scala.tools.nsc._ import scala.tools.nsc._ scala> var i = new解释器警告:有4个弃用警告;使用-deprecation重新运行以获取详细信息警告:有1个弃用警告;用-deprecation重新运行以获取详细信息i:scala.tools.nsc.Interpreter = scala.tools.nsc.Interpreter@786bfd73 scala> println(i.parse(“2 3”))some(List(2. $ plus( 3)))
我对自己糟糕的英语感到非常抱歉
1 回答
根据xsbt的FAQ:
而且还有更多:
给出的示例使用了一些任意类型
MyType
. 实际上,您可以使用任何类型来帮助找到合适的类加载器(请参阅this answer) .因此,您的代码应如下所示: