编译失败:在Scala 2.10下从Java 8加载AnnotatedElement、ConcurrentMap、CharSequence时出错?
我正在使用以下命令:编译失败:在Scala 2.10下从Java 8加载AnnotatedElement、ConcurrentMap、CharSequence时出错?,scala,sbt,Scala,Sbt,我正在使用以下命令: Scala 2.10.4 Scalatra 2.2.2 sbt 0.13.0 java 1.8.0 卡斯巴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
- Scala 2.10.4
- Scalatra 2.2.2
- sbt 0.13.0
- java 1.8.0
- 卡斯巴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的东西。我注释掉了所有对它的引用,但我仍然得到了这个。这可能是我正在使用的库之间的依赖性问题吗?在我的公司,CharSequence出现了这个问题。这是因为Scala2.10.x不适用于Java8。这是用Scalas描述的。切换回Java 7。我发现需要在Scala 2.10.4和Java 1.8上运行Scala 2.9.2+和Java 1.7的软件也存在同样的问题。通过sudo更新选项更改为Java 7——配置Java切换到Scala 2.10.4为我解决了这个问题。我希望Scala的稳定版本能够帮助您,尝试2.10.x和Java 1.7.x版本以获得更好的性能
我的意思是,它对我同样有效。在使用Scala 2.10.4和sbt 0.12.4的Java 1.8.0上,我也有类似的问题。但是当升级到sbt 0.13.7时,问题就解决了。我也遇到了同样的问题。然而,通过切换到Java7,我的问题得到了解决。 因此,现在这种配置对我有效:
sbt 0.13.8
scala 2.11.7
java 7
我用以下方法解决了这个问题:
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.10.2-RC2</version>
</dependency>
org.scala-lang
scala图书馆
2.10.2-RC2
我的环境是:
- JDK 8
- 马文
- 斯卡拉
wget www.scala-lang.org/files/archive/scala-2.11.7.deb
现在试试看 为了让它正常工作,我进行了大量的重新配置, 这是我(现在)正在使用的build.sbt, sbt 0.13.15和scala 2.10.4以及jdk 1.8.1131
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
更改为java 7并重试。这是java 8和使用scala 2.9的代码的问题。所有损坏的类都是JDK的一部分,这似乎表明@ajozwik是正确的。它被修复了吗?我也有一个类似的问题,但我正在使用scala 2.11.4和Java 8:(切换到1.7如何解决这个问题。这是OP声称使用的特定版本。)
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