2012-11-06 31 views
5

Tôi đang phát triển một vài tiện ích tùy chỉnh mà tôi muốn có thể sử dụng với UiBinder. Đáng tiếc là tôi tiếp tục lãng phí cuộc sống của tôi đi với đuổi xuống lỗi sau:GWT Hoãn ràng buộc không thành công cho lớp tùy chỉnh: Không có lớp nào khớp với "..." trong urn: import:

Không có lớp phù hợp với "..." trong urn: nhập khẩu: ...

này có vẻ là nhận tất cả ngoại lệ được ném bất kỳ lúc nào có mọi lỗi trong lớp ngăn trình biên dịch GWT xử lý nó. Điều này bao gồm bất cứ thứ gì trong toàn bộ cây phụ thuộc của lớp.

Để lưu bản thân và bất kỳ ai trong số các bạn đang gặp phải vấn đề tương tự một thời gian và đau đớn, hãy biên soạn một danh sách ở đây về những nguyên nhân bất ngờ và khó tìm nhất. Tôi sẽ bắt đầu với bản mới nhất của tôi, điều này đã khiến tôi quyết định đăng bài này ở đây.

Trả lời

1

Tôi đã viết một lớp trợ giúp mà tiện ích này sử dụng một nơi nào đó sâu bên trong cây phụ thuộc của nó.

Đối với lớp trình trợ giúp này, tôi đã nói với Eclipse để tự động tạo các hàm hashCode()equals(...). Lớp này chứa một trường kiểu double, mà Eclipse tạo mã sử dụng Double.doubleToLongBits().

Tắt GWT không triển khai phương pháp này trên phiên bản Double. Nhưng tất nhiên, Eclipse không phát hiện ra điều này như là một lỗi biên dịch có thể, cũng không gây ra bất kỳ vấn đề nào trong Chế độ Dev nếu tôi sử dụng tiện ích bên trong mã Java của GWT-App thay vì bên trong UiBinder.

3 giờ xuống cống ... Tuyệt vời ... Yay cho các thông báo lỗi hữu ích.

UPDATE:

Tính đến GWT 2.5.0 (RC1) GWT bây giờ hỗ trợ Double.doubleToLongBits() render lỗi này đặc biệt trở nên lỗi thời, nhưng cơ chế lỗi chung của một thi đua JRE mất tích vẫn còn và có lẽ sẽ đơm hoa trong một cách tương tự vô ích.

2

Tôi đã viết một thành phần sử dụng chức năng JSON GWT, nhưng chưa nhập com.google.gwt.json.JSON vào mô-đun.

Nhờ tin nhắn của bạn ở đây, đây là chỉ có 2 giờ tan thành mây khói ...

3

Tôi đã sử dụng một CellList thusly:

private static RelationshipViewerUiBinder uiBinder = GWT.create(RelationshipViewerUiBinder.class); 

@UiField(provided=true) 
CellList<String> prioritisedDisplay; 

public RelationshipViewer() { 

    prioritisedDisplay = new CellList<>(new TextCell()); 
    initWidget(uiBinder.createAndBindUi(this)); 
} 

lưu ý Java 7 phong cách <> trên CellList. Mặc dù sự phản đối của IDE của tôi ngược lại, hóa ra bạn DO cần phải nói rõ ràng CellList < String> trong cuộc gọi mới đó, hoặc nó sẽ không biên dịch và tất cả những gì bạn nhận được là lỗi được đề cập ở trên. Cảm ơn bằng cách này, sự tồn tại của câu hỏi này nhắc tôi xem xét kỹ mã của tôi và có thể đã cứu tôi một vài giờ! Này cố định nó:

private static RelationshipViewerUiBinder uiBinder = GWT.create(RelationshipViewerUiBinder.class); 

@UiField(provided=true) 
CellList<String> prioritisedDisplay; 

public RelationshipViewer() { 

    prioritisedDisplay = new CellList<String>(new TextCell()); 
    initWidget(uiBinder.createAndBindUi(this)); 
}