Scalac 选项 Yopt-log-inline 出错

Scalac option Yopt-log-inline make errors

当我使用这些参数时使用 scala 2.12.4

scalacOptions := Seq("-unchecked", "-deprecation", "-opt:l:inline","-opt-inline-from:bfd.DateTime$","-Yopt-log-inline")

我有错误,当我不使用 "-Yopt-log-inline"

时不存在错误
[info] Compiling 7 Scala sources to /Users/admin/Workspace/bfd/target/scala-2.12/classes ...
[error] error while loading Object, Missing dependency 'object scala in compiler mirror', required by /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre/lib/rt.jar(java/lang/Object.class)
[error] ## Exception when compiling 7 sources to /Users/admin/Workspace/bfd/target/scala-2.12/classes
[error] object scala in compiler mirror not found.
[error] scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:17)
[error] scala.reflect.internal.MissingRequirementError$.notFound(MissingRequirementError.scala:18)
[error] scala.reflect.internal.Mirrors$RootsBase.$anonfun$getModuleOrClass(Mirrors.scala:54)
[error] scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:54)
[error] scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:66)
[error] scala.reflect.internal.Mirrors$RootsBase.getPackage(Mirrors.scala:172)
[error] scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackage$lzycompute(Definitions.scala:169)
[error] scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackage(Definitions.scala:169)
[error] scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackageClass$lzycompute(Definitions.scala:170)
[error] scala.reflect.internal.Definitions$DefinitionsClass.ScalaPackageClass(Definitions.scala:170)
[error] scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1423)
[error] scala.tools.nsc.Global$Run.<init>(Global.scala:1164)
[error] xsbt.ZincCompiler$ZincRun.<init>(CallbackGlobal.scala:63)
[error] xsbt.CachedCompiler0.run(CompilerInterface.scala:129)
[error] xsbt.CachedCompiler0.run(CompilerInterface.scala:106)
[error] xsbt.CompilerInterface.run(CompilerInterface.scala:32)
[error] sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
...

我认为错误与内联的使用无关。也许这些选项会覆盖 scala 依赖项定义。

是编译器中的错误还是反馈不明确的错误设置?

-Yopt-log-inline 需要一个参数。 -opt-inline-from:**的通配符相当于下划线_.

因此,要更正此错误,请像这样将此参数添加到 scalacOptions。

scalacOptions ++= Seq("-opt:l:inline","-opt-inline-from:bfd.DateTime$","-Yopt-log-inline", "_")

编辑:

这里的问题是 scalac 和 sbt 之间的问题,sbt 在 Scala 选项旁边给出了 class pass,所以 scalac 认为 classpath 是 -Yopt-log-inline 的选项并且从没有实际的 class 路径开始,这会导致崩溃。

如果您正在使用 sbt 并且不想陷入这种错误,您可以使用“-Y”作为最后的选择。