编译失败:在Scala 2.10下从Java 8加载AnnotatedElement,ConcurrentMap,CharSequence时出错?

时间:2014-06-13 04:39:56

标签: scala sbt

我使用以下内容:

  • Scala 2.10.4
  • Scalatra 2.2.2
  • sbt 0.13.0
  • java 1.8.0
  • casbah 2.7.2
  • scalatra-sbt 0.3.5

我经常遇到这个错误:

21:32:00.836 [qtp1687101938-55] ERROR o.fusesource.scalate.TemplateEngine - Compilation failed:
error: error while loading CharSequence, class file '/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jar(java/lang/CharSequence.class)' is broken
(class java.lang.RuntimeException/bad constant pool tag 18 at byte 10)
error: error while loading ConcurrentMap, class file '/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jar(java/util/concurrent/ConcurrentMap.class)' is broken
(class java.lang.RuntimeException/bad constant pool tag 18 at byte 61)
two errors found
21:38:03.616 [qtp1687101938-56] ERROR o.fusesource.scalate.TemplateEngine - Compilation failed:
error: error while loading AnnotatedElement, class file '/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jar(java/lang/reflect/AnnotatedElement.class)' is broken
(class java.lang.RuntimeException/bad constant pool tag 18 at byte 76)
one error found

目前我只是尝试在我的MongoDB集合上调用.count()时遇到此问题。

通过谷歌搜索,似乎可能是由依赖问题引起的。问题是,我使用Scalatra只是为了服务API而且实际上并不需要任何scalate的东西。我评论了所有对它的引用,但我仍然得到了它。它可能是我使用的库之间的依赖问题吗?

9 个答案:

答案 0 :(得分:50)

在我的公司,我们遇到了CharSequence的这个问题。这是因为Scala 2.10.x不能与Java 8一起使用。这在Scalas mailinglist中有所描述。切换回Java 7。

答案 1 :(得分:11)

切换到Scala 2.10.4解决了我的问题。

答案 2 :(得分:4)

我在使用Scala 2.10.4和sbt 0.12.4的Java 1.8.0上遇到了类似的问题。但是当升级到sbt 0.13.7时,问题就解决了。

答案 3 :(得分:3)

我在Scala 2.10.4和Java 1.8上运行需要Scala 2.9.2+和Java 1.7的软件时遇到了同样的问题。通过sudo update-alternatives --config java

更改为Java 7

答案 4 :(得分:0)

我通过使用:

解决了这个问题
<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.10.2-RC2</version>
</dependency>

我的环境是:

  • JDK 8
  • 的Maven
  • Scala的

答案 5 :(得分:0)

我在Ubuntu 14.04中也遇到了同样的问题,但我解决了删除scala 2.10并安装2.11

wget www.scala-lang.org/files/archive/scala-2.11.7.deb

dpkg -i scala-2.11.7.deb

现在试试。

答案 6 :(得分:0)

为了让它发挥作用,我进行了大量的重新配置, 这是我的(现在)工作build.sbt使用, sbt 0.13.15和scala 2.10.4和jdk 1.8.1_131

name := "ScalaTelemetryManagerApi"
version := "1.0"
scalaVersion := "2.10.4"
scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")

libraryDependencies ++= {
  Seq(
    "io.spray"            %   "spray-can"     % "1.3.1",
    "io.spray"            %   "spray-routing" % "1.3.1",
    "io.spray"            %   "spray-testkit" % "1.3.1",
    "com.typesafe.akka"   %%  "akka-actor"    % "2.3.2",
    "com.typesafe.akka"   %%  "akka-testkit"  % "2.3.2",
    "org.specs2"          %%  "specs2-core"   % "3.6",
    "com.github.seratch"  %%  "awscala"       % "0.5.+",
    "org.scalaz"      %%  "scalaz-core"   % "7.2.14"
  )
}

resolvers += "Scalaz Bintray Repo" at "https://dl.bintray.com/scalaz/releases"

Revolver.settings

retrieveManaged := true

答案 7 :(得分:-1)

我希望稳定版的Scala能为您提供帮助,请尝试使用Java 1.7.x版本的2.10.x以获得更好的性能。

我的意思是它同样适用于我。

答案 8 :(得分:-1)

我遇到了同样的问题。但是,通过切换到Java 7,我的问题得到了解决。 所以现在这个配置对我有用:

sbt 0.13.8
scala 2.11.7
java 7