扩展java.util.Stack时出现scala错误:加载向量$时出错

时间:2013-07-30 21:47:34

标签: scala

我正在使用scala v2.10.2; eclipse与scala插件v3.0.1;完整的错误消息是:

  加载Vector $ 1,类文件'C:\ Program时出错

  Files \ Java \ jre7 \ lib \ rt.jar(java / util / Vector $ 1.class)'已损坏(类   找不到java.util.NoSuchElementException / key:E)

尝试扩展java.util.Stack

时发生
import java.util.Stack
class MyStack[T] extends Stack[T]{}

值得注意的是java.util.Stack是java.util.Vector的子类。

2 个答案:

答案 0 :(得分:2)

这个同样的问题可能是更大的错误报告的一部分: https://issues.scala-lang.org/browse/SI-7455

报告声明在Scala 2.10.3-RC1,Scala 2.11.0-M6

中修复

我正在等待下一个稳定的scala IDE更新,然后再验证fixed(懒惰我知道),但同时简单的解决方法是简单地更改类定义以扩展scala.collection.mutable.Stack。 / p>

- 遇到这个问题的大多数人都试图使用摇摆;对于你我只能推荐尝试其中一个scala的固定版本。

答案 1 :(得分:2)

java.util.Stack扩展了基本上已弃用的java.util.Vector,因此也基本上已弃用(实际上 已弃用,但文档始终建议使用较新的替代方案,如果您'重新运行更新版本的Java)。 javadoc for Stack建议改为使用java.util.Deque interface

  

Deque接口及其实现提供了一组更完整,更一致的LIFO堆栈操作,应该优先使用这个类。例如:Deque<Integer> stack = new ArrayDeque<Integer>();

使用Deque界面和java.util.ArrayDeque可能会解决您的问题,因为 - 引用pretzels1337的答案 - 这似乎是Vector特定的错误。