Eclipse / Scala插件中的“非法循环引用”错误

时间:2012-11-16 20:07:47

标签: scala

我创建了一个文件夹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
}

循环参考在哪里?我该如何删除它?据我所知,我无法在包对象中定义它的特征和案例子类。但我不清楚这种限制来自何处。

1 个答案:

答案 0 :(得分:2)

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

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

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

package object mypkg {
  class MyClass
}

以下内容:

package mypkg {
  class MyClass
}

哪个适用于Eclipse / EclipseIDE。