2012-11-16 20 views
5

Tôi đã tạo một thư mục x bằng một tệp nguồn package.scala trong đó. Các tập tin chứa đoạn mã sau:`lỗi tham chiếu cyclic bất hợp pháp` trong Eclipse/Scala plugin

package x 

package object y 
{ 
    trait A 

    case class B extends A 
} 

Eclipse sẽ hiển thị một lỗi biên dịch: illegal cyclic reference involving object y.

Tôi không chắc chắn điều này có nghĩa là gì. Nếu tôi cố gắng xác định một lớp bình thường (loại bỏ case) thông báo lỗi biến mất. Một giải pháp khác là sử dụng đối tượng bình thường thay vì đối tượng gói:

package x 

object y 
{ 
    trait A 

    case class B extends A 
} 

Tham chiếu tuần hoàn ở đâu? Và làm thế nào tôi có thể loại bỏ nó? Theo như tôi hiểu tôi không thể xác định một đặc điểm và một phân lớp trường hợp của nó bên trong một đối tượng gói. Nhưng tôi không biết đầu mối này đến từ đâu.

+1

Tôi cũng gặp phải vấn đề này, biên dịch phiên bản 'gói đối tượng' với SBT hoạt động tốt. Vì vậy, nó là một lỗi của Eclipse. – pedrofurla

+0

@pedrofurla: Ok. Sau đó, tôi chỉ cần đợi cho đến khi lỗi được sửa. Ít nhất tôi biết rằng mã của tôi là chính xác. Cảm ơn. – Giorgio

Trả lời

2

Vì PedroFuria cho biết đây là lỗi nhưng bạn nên xem the issue associated with the bug trong những trường hợp này. Cụ thể, kết luận đã trở lại vào tháng 9 năm 2011:

Xác định các lớp trong đối tượng gói chỉ làm việc một nửa trong trình biên dịch Scala. Bạn có thể giải quyết vấn đề này bằng cách định nghĩa lớp của bạn trong thư mục bên phải. Tôi nghi ngờ điều này sẽ sớm được hỗ trợ đầy đủ.

Vì vậy, tốt nhất để tham khảo related issue này mà chỉ ra rất dễ dàng để thay thế:

package object mypkg { 
    class MyClass 
} 

như sau:

package mypkg { 
    class MyClass 
} 

nào sẽ làm việc với Eclipse/EclipseIDE.

Các vấn đề liên quan