Scala repl抛出错误。

58

当我在终端中输入scala来启动repl时,它会抛出这个错误

scala> [init] error: error while loading AnnotatedElement, 
class file '/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar
(java/lang/reflect/AnnotatedElement.class)' 
is broken (bad constant pool tag 15 at byte 2713)

当我按下回车并输入println("hello,world")时,它再次抛出这个错误

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 1501)

我使用的是Ubuntu 14.04,而java -version则显示

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

你使用的 Scala 版本是什么? - izstas
scala -version 命令会返回 Scala 代码运行器版本 2.9.2 -- 版权所有 2002-2011,LAMP/EPFL - ajay
除了更新Scala版本,我还必须更新项目属性中的SBT版本来解决这个问题。 - Peter Becich
4个回答

63

要么升级到更新的scala版本(2.10.3+),要么将Java降级到Java 6/7。如您在输出中所见,2.9.2早于引入Java 8 (版权所有2002-2011,LAMP/EPFL),因此它们不兼容。

这个重复问题包含了ubuntu下Java降级的具体指示。


感觉祖先成为它的后继者(这个)的副本在逻辑上是不可能的。这就是为什么你标记 早期问题 为重复(请参见“问题之前已经有答案”,但不是或),与此相比有点不准确。但实际上您是正确的,因为当前帖子具有显式答案,而早期帖子具有隐含答案,并且从法律上讲未被回答。 - Yehor Nemov
1
@ghoshak 我通常更喜欢旧的问题,但是,是的,关闭了那个因为它没有被接受的答案,而且现有的问题只提出了一种解决问题的方式。从这个角度来看,这篇帖子有更好的机会。 - om-nom-nom
是的,你的观点也很正确,但你六个月前在哪里呢? - Yehor Nemov
我不明白为什么2.10.3比2.9.2更高版本? - code4j
@code4j 这就像是第10层的3号公寓比第9层的2号公寓更高一样。 - om-nom-nom

13

使用终端删除Scala 2.9.2

 sudo apt-get remove scala 

scala官网下载最新的Scala。

此链接上提供了安装说明。


1
我安装了Scala 2.11.6。别忘了设置Scala的环境变量以便全局访问。 - Hafiz Shehbaz Ali

1

你可能需要使用JDK 7或6来运行它。


通过设置环境变量,例如:export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/ - panchicore

0

欢迎提供解决方案的链接,但请确保您的回答在没有链接的情况下也是有用的:添加链接上下文,以便其他用户了解它是什么以及为什么存在,然后引用您链接页面中最相关的部分,以防目标页面不可用。仅包含链接的答案可能会被删除 - Sᴀᴍ Onᴇᴌᴀ

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