Scala REPL启动错误 "class file is broken"

18

每次启动Scala 2.9.2 REPL(Java HotSpot(TM) 64-Bit Server VM,Java 1.8.0-ea),执行第一行代码时会出现错误:

scala> 1 + 2
error: error while loading CharSequence, class file '/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar(java/lang/CharSequence.class)' is broken
(bad constant pool tag 15 at byte 1484)

后来在当前的REPL实例中进一步评估时没有发生类似的错误。

有人有什么建议如何处理这种行为吗?


2
我认为这是由于Scala 2.9.2和Java 8之间存在一些冲突,尝试使用更新的Scala或更旧的Java。 - 4lex1v
4
感谢建议。切换到Scala 2.10.2已解决问题。 - Yehor Nemov
1
我正在使用Scala 2.11.8版--版权所有2002-2016,LAMP/EPFL和Java版本“1.8.0_111”。然后我也遇到了以下错误: [INFO] 没有已知的依赖项。编译所有内容 [ERROR] 错误:加载CharSequence时出错,类文件'/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar(java/lang/CharSequence.class)'已损坏 [INFO] (类java.lang.RuntimeException /在字节10处的坏常量池标记18) [ERROR] 找到一个错误 - Ashutosh Shukla
1个回答

26

尝试选择其他可替代的Java提供者:

$ sudo update-alternatives --config java

有一些替代Java的选择(提供/usr/bin/java)。

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-8-oracle/jre/bin/java          1071      auto mode
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1051      manual mode
* 3            /usr/lib/jvm/java-8-oracle/jre/bin/java          1065      manual mode

Press enter to keep the current choice[*], or type selection number: 

修改后: Scala现在适用于Java 8 :-)

请查看http://www.scala-lang.org/news/2013/09/18/release-notes-v2.10.3-RC2.html


1
这个有效。谢谢! - faisal00813
1
太棒了,现在可以工作了。 - Rahul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接