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

我正在使用以下内容:

  • 斯卡拉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()时遇到了这个问题。

谷歌search,似乎可能是由依赖问题引起的。 事情是,我正在使用Scalatra来服务一个API,实际上并不需要任何scalate的东西。 我评论了所有的引用,但我仍然得到这个。 这可能是我使用的库之间的依赖性问题?

在我的公司,我们遇到了CharSequence这个问题。 这是由于Scala 2.10.x不支持Java 8.这在Scala 邮件列表中有描述。 切换回Java 7。

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

在Java 1.8.0中,与Scala 2.10.4和sbt 0.12.4一样,我也遇到类似的问题。 但升级到0.13.7时,问题就解决了。

我看到了在Scala 2.10.4和Java 1.8上运行需要Scala 2.9.2+和Java 1.7的软件的相同问题。 通过sudo update-alternatives –config java更改为Java 7

我解决了这个问题,使用:

 <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.10.2-RC2</version> </dependency> 

我的环境是:

  • JDK 8
  • Maven的
  • 斯卡拉

这是很多重新configuration,让我得到它的工作,这里是我的(现在)工作build.sbt使用,sbt 0.13.15和斯卡拉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 

我也在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 

现在尝试。

我希望一个稳定的Scala版本可以帮助你,试用Java 1.7.x版本2.10.x以获得更好的性能。

我的意思是它也适用于我。

我有同样的问题。 但是,通过切换到Java 7我的问题已解决。 所以现在这个configuration适用于我:

 sbt 0.13.8 scala 2.11.7 java 7