【问题标题】:`illegal cyclic reference` error in Eclipse / Scala pluginEclipse / Scala 插件中的“非法循环引用”错误
【发布时间】:2012-11-05 14:20:42
【问题描述】:

我创建了一个文件夹x,其中包含一个源文件package.scala。 该文件包含以下代码:

package x

package object y
{
  trait A

  case class B extends A
}

Eclipse 显示编译错误:illegal cyclic reference involving object y

我不太确定这意味着什么。如果我尝试定义一个普通类(删除case),错误消息就会消失。另一种解决方案是使用普通对象而不是包对象:

package x

object y
{
  trait A

  case class B extends A
}

循环引用在哪里?我怎样才能删除它?据我了解,我无法在包对象中定义特征和案例子类。但我不知道这个限制来自哪里。

【问题讨论】:

  • 我也遇到了这个问题,用 SBT 编译 package object 版本可以正常工作。所以,这是一个 Eclipse 错误。
  • @pedrofurla:好的。然后我只需要等到错误得到修复。至少我知道我的代码是正确的。谢谢。

标签: scala


【解决方案1】:

正如 PedroFuria 所说,这是一个错误,但在这些情况下查看 the issue associated with the bug 总是好的。具体来说,结论是在 2011 年 9 月:

在包对象中定义类只在 Scala 编译器本身中工作了一半。您可以通过在正确的目录中定义您的类来解决此问题。我怀疑这会很快得到全面支持。

所以最好参考这个related issue 指出很容易替换:

package object mypkg {
  class MyClass
}

以下内容:

package mypkg {
  class MyClass
}

这将适用于 Eclipse / EclipseIDE。

【讨论】:

    猜你喜欢
    • 2011-09-14
    • 2017-09-04
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    相关资源
    最近更新 更多