如何排除故障“错误:scalac:对类文件'package.class'中遇到的scala.ScalaObject的错误符号引用”?

时间:2014-07-09 00:58:57

标签: scala sbt

我尝试运行项目时遇到此错误消息:

Error:scalac: bad symbolic reference to scala.ScalaObject encountered in class file 'package.class'.
Cannot access type ScalaObject in package scala. The current classpath may be
missing a definition for scala.ScalaObject, or package.class may have been compiled against a version that's incompatible with the one found on the current classpath.

有类似的问题herehere,但似乎没有一个问题适用于我的情况 - 我的情况并非如此。我唯一要做的就是scalaObject.

这是一次突然的破坏 - 这个项目是在IntelliJ IDEA内部用sbt进行的,直到今天才开始查找。突然间,它找不到它需要的东西。

这是整个build.sbt文件:

name := "MyApp"

libraryDependencies ++= Seq(
  "joda-time" % "joda-time"    % "2.3",
  "org.joda"  % "joda-convert" % "1.6",
  "org.scala-lang" % "scala-swing" % "2.9.2",

如何解决此问题?

2 个答案:

答案 0 :(得分:0)

我相信您可能已更改sbt.version中的project/build.propertiesscalaVersion中的build.sbt。或只是sbt发射器。或IntelliJ IDEA的Scala插件。可能是这样吗?

我基于“或者package.class可能是针对某个版本进行编译的 与当前类路径中找到的不兼容。“

您可能希望在update中看到target\resolution-cache\reports报告。

答案 1 :(得分:0)

您提到您使用的是IntelliJ IDEA。我正在使用Scala IDE for Eclipse,我遇到了这个错误。它仅在我在IDE配置中关闭此选项时发生:

withVersionClasspathValidator - 检查类路径中的jar的Scala兼容性

当此选项打开时,我得到了:

mongo-casbah-commons_2.8.1-2.1.2.jar使用不兼容的Scala版本(2.8.1)进行交叉编译。

我是Scala的新手,但这似乎是因为我正在使用Scala 2.11.2进行编译,但我包含了一个使用Scala 2.8.1构建的jar。