2011-08-25 6 views
5

Tôi đã tạo một Vaadin mới (6.6.5) dự án trong nhật thực và tôi đã cố gắng để triển khai nó trên JBoss 7.0 nhưng nó mang lại cho tôi một GWT ClassNotFoundExceptionTriển khai vaadin để JBoss 7.0 mang lại cho tôi một ClassNotFoundException

Caused by: java.lang.ClassNotFoundException: com.google.gwt.user.client.ui.HasWidgets from [Module "deployment.test.war:main" from Service Module Loader] 
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:358) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:330) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:330) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:307) 
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:101) 
    ... 64 more 

Tôi có cần phải làm gì đó để triển khai các thư viện gwt không?

+0

trình khi thêm gwt-dev.jar, gwt-user.jar, validation-api-1.0.0.GA.jar vào WEB -INF \ lib thư mục theo cách thủ công. Không có vẻ là ý định của plugin eclipse để làm điều đó như thế này, nên có một giải pháp tốt hơn phải không? –

Trả lời

5

Dường như một số lớp GWT trong gwt-user.jar cần thiết để biên dịch widgetset bên ứng dụng Vaadin được nạp bởi JBoss7 một cách không cần thiết.

vaadin.jar chứa tham chiếu đến gwt-user.jar nhưng không bắt buộc trong thời gian chạy, chỉ trong thời gian biên dịch widgetset. Tuy nhiên JBoss muốn tải các lớp này gây ra vấn đề.

Có một báo cáo lỗi trong JBoss cho việc này: http://community.jboss.org/thread/169575?tstart=0

Như đã đề cập ở đó, cách giải quyết là bao gồm gwt-user.jar để gói triển khai trong WEB-INF thư mục/lib với vaadin.jar, dường như công việc.

+0

Xem thêm: vé http://dev.vaadin.com/ticket/7822 –

1

Plugin Vaadin Eclipse tạo phụ thuộc thư viện cho các tệp jar gwt và nói chung Eclipse nên xử lý đường dẫn lớp thời gian chạy khi triển khai.

Là tên gói com.google.gwt.user.client đề xuất tên này phải nằm trong gwt-user.jar.

Chỉ cần gwt-dev.jar khi biên dịch mã phía máy khách với GWT.

Bạn đang sử dụng tiện ích bổ sung? Các add-on (và phụ thuộc của chúng) nên luôn được thêm vào WEB-INF/lib để làm cho các lớp phía máy chủ có sẵn cho mã ứng dụng và phía máy khách có sẵn cho trình biên dịch GWT.

Trên nguyên nhân có thể có của sự cố là (không cần thiết) phụ thuộc vào lớp phía máy khách không có sẵn trong máy chủ khi chạy. Vì vậy, bạn cũng có thể kiểm tra mã của bạn cho các phụ thuộc phía máy chủ không cần thiết đối với các lớp GWT phía máy khách (như HasWidgets).

1

Kiểm tra mã của bạn để đảm bảo rằng bạn không vô tình truy cập vào lớp com.google.gwt. ** này từ mã của bạn. Như đã nói ở trên, không cần triển khai các thư viện gwt trong máy chủ.