【问题标题】:scala error when extending java.util.Stack : error while loading vector$扩展 java.util.Stack 时出现 scala 错误:加载 vector$ 时出错
【发布时间】:2013-07-30 21:47:34
【问题描述】:

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

加载 Vector$1 时出错,类文件 'C:\Program Files\Java\jre7\lib\rt.jar(java/util/Vector$1.class)' 已损坏(类 java.util.NoSuchElementException/key not found: E)

尝试扩展 java.util.Stack 时发生

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

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

【问题讨论】:

    标签: scala


    【解决方案1】:

    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 特有的错误。

    【讨论】:

      【解决方案2】:

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

      报告声称已在 Scala 2.10.3-RC1、Scala 2.11.0-M6 中修复

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

      -- 大多数遇到这个问题的人都在尝试使用swing;对你来说,我只能推荐尝试 scala 的固定版本之一。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-10
        • 1970-01-01
        • 2015-06-20
        • 1970-01-01
        • 2014-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多