2011-12-10 26 views
7

Tôi đã gặp phải một lỗi lạ khi làm việc trong dự án Khung Chơi của tôi. Trong khi dự án của tôi đang chạy, tôi sẽ thỉnh thoảng nhận được một ClassCastException, nhưng lỗi là thế này:ClassCastException không thể giải thích được ném trong Khung Chơi

ClassCastException occured : models.Person cannot be cast to models.Person

này thường xảy ra khi tôi gọi một phương thức tìm như:

Person p = Person.find("name=?","Joe").first();

Nếu tôi khởi động lại dự án, vấn đề sẽ biến mất, nhưng chỉ tạm thời. Nó làm cho thử nghiệm dự án của tôi là một nỗi đau lớn. Làm thế nào để sửa lỗi này?

+0

Tôi đang đối mặt với cùng một vấn đề. Tôi tin rằng đây là một cái gì đó liên quan đến tính năng "tải lại" của máy chủ web dev. Dường như nó bị hỏng hoặc máy của tôi bị cấu hình kém. Vì Play quá nhỏ, tôi đặt cược vào tùy chọn đầu tiên. –

+0

Tôi gặp vấn đề tương tự khi chơi 2.6.3. – nemoo

+0

Như @HotLicks đã đề cập điều này có thể là một vấn đề không gian tên. Tôi đã không nhận thấy rằng tôi thực sự có hai tập tin 'main.scala.html' (một trong một tiểu dự án) mà đã ném cho tôi lỗi * thời gian chạy này * - vì vậy thay đổi tên tập tin đó đã biến mất tất cả –

Trả lời

2

tôi đã có kinh nghiệm lỗi này khi ở chế độ Dev trong play, trong hai kịch bản (như xa như tôi có thể nhớ):.

  • Sửa đổi một thực thể và cố gắng khôi phục các giá trị từ bộ nhớ cache là các đối tượng của lớp thực thể đó.
  • Một lỗi biên dịch trong khi tải lại đoạn code của trang/ứng dụng

Trong cả hai kịch bản sửa lỗi biên soạn hoặc làm sạch bộ nhớ cache giải quyết vấn đề này.

Không nói rằng đó là những khả năng duy nhất, có thể bạn đang gặp phải một số vấn đề khác.

+0

Tôi đã nhìn thấy điều này một vài lần trong chế độ dev. Nó thường xảy ra sau khi thay đổi mã nóng, ngay cả khi được thực hiện cho các tệp không liên quan đến thực thể (lớp Person trong trường hợp của bạn.) – chris

3

Điều này rất có thể xảy ra vì bạn đã tải lớp Person xuống dưới hai trình nạp lớp khác nhau. Khi một lớp được nạp hai lần trong hai trình nạp lớp khác nhau, nó có hiệu quả hai lớp riêng biệt.

(Thật không may, tôi không thể cho bạn biết nơi/làm thế nào bạn có thể làm điều này.)

(Và nó là một chút tò mò muốn có vấn đề bật lên trên báo cáo kết quả bạn liệt kê. Bạn có chắc chắn rằng là ? mà nó xảy ra có lẽ bạn nên hiển thị các traceback ngoại lệ)

+0

Tôi khá chắc chắn đây là nơi nó xảy ra - khi chạy dự án trên vùng làm việc cục bộ của tôi, trang Lỗi phát sẽ xuất hiện và nó làm nổi bật câu lệnh này màu đỏ. Lỗi này thường xảy ra khi tôi thực hiện chỉnh sửa cho mã của mình, lưu tệp và sau đó quay lại dự án của tôi. – torourke

+0

@torourke - Nếu bạn đang tự động chỉnh sửa/biên dịch trong khi chạy, điều đó sẽ giải thích nó. –

1

Trong trường hợp của tôi, điều này liên quan đến việc áp dụng diễn biến từ giao diện web. Ai đó đã nêu ra a bug for this, nhưng cho đến nay nó chưa nhận được bất kỳ sự chú ý nào từ nhóm dev. Có một bản vá gắn liền với vé, nhưng tôi đã không thử nó, vì vậy YMMV.

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