在Scala 2.11中可用的此代码在2.12中不起作用:
rval = sp.SendCommand("AT+CSMP=17,167,0,144");
我收到以下错误,在2.12版中发生了什么变化?
线程“ main”中的异常java.lang.AbstractMethodError: scala.reflect.internal.SymbolPairs $ Cursor.matches(Lscala / reflect / internal / Symbols $ Symbol;)Z
注意:我必须添加到类路径import scala.reflect.runtime.universe
import scala.tools.reflect.ToolBox
val tb = universe.runtimeMirror(getClass.getClassLoader).mkToolBox()
tb.eval(tb.parse("""println("hello!")"""))
答案 0 :(得分:1)
是否可以将项目更新为Scala 2.12,但在类路径上保留对scala-compiler
2.11的依赖?
在2.12中,与您的代码无关。为了使代码正常工作,您必须对scala-compiler有依赖性。
这是一个具有Scala 2.11的SBT项目,没有scala-compiler
依赖项:
name := "q53391593"
organization := "sk.ygor.stackoverflow"
version := "1.0-SNAPSHOT"
scalaVersion := "2.11.12"
您的代码无法编译:{{1}},object runtime is not a member of package reflect
,object tools is not a member of package scala
您需要添加对not found: value universe
的依赖关系:
scala-compiler
这将在您的classpat上放置两个额外的jar:name := "q53391593"
organization := "sk.ygor.stackoverflow"
version := "1.0-SNAPSHOT"
scalaVersion := "2.12.6"
libraryDependencies += "org.scala-lang" % "scala-compiler" % scalaVersion.value
和scala-compiler:2.12.6:jar
。如果您不使用SBT,请确保自己包括它们。
此外,请注意使用scala-reflect:2.12.6:jar
来指定库的版本。这样可以避免将不兼容的Scala库版本混合在一起。