Развертывание vaadin в JBoss 7.0 дает мне ClassNotFoundException - PullRequest
5 голосов
/ 25 августа 2011

Я создал новый проект Vaadin (6.6.5) в Eclipse и попытался развернуть его на JBoss 7.0, но он дает мне GWT 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

Нужно ли мне делатьчто-то дополнительное для развертывания библиотек gwt?

Ответы [ 4 ]

5 голосов
/ 16 октября 2011

Похоже, что некоторые классы GWT в gwt-user.jar, необходимые для компиляции набора виджетов на стороне клиента Vaadin, загружаются JBoss7 без необходимости.

vaadin.jar содержит ссылки на gwt-user.jar, но это не требуется во время выполнения, только во время компиляции набора виджетов. Тем не менее JBoss хочет загрузить эти классы, вызывая проблему.

В JBoss есть сообщение об ошибке: http://community.jboss.org/thread/169575?tstart=0

Как уже упоминалось, обходной путь - это включить gwt-user.jar в пакет развертывания в папке WEB-INF / lib вместе с vaadin.jar, похоже, работает.

1 голос
/ 31 августа 2011

Проверьте свой код, чтобы убедиться, что вы случайно не получили доступ к этому классу com.google.gwt. ** из своего кода.Как сказано выше, нет необходимости развертывать библиотеки gwt на сервере.

1 голос
/ 29 августа 2011

Плагин Vaadin Eclipse создает библиотечные зависимости для файлов gwt jar, и, как правило, Eclipse должен позаботиться о пути к классам среды выполнения при развертывании.

Поскольку имя пакета com.google.gwt.user.client предполагает, что это должно быть в gwt-user.jar.

gwt-dev.jar должен использоваться только при компиляции client-код стороны с GWT.

Используете ли вы дополнения?Надстройки (и их зависимости) следует всегда добавлять в WEB-INF / lib, чтобы сделать серверные классы доступными для приложения, а клиентский код - для компилятора GWT.

О возможной причинепроблема (ненужная) зависимость от класса на стороне клиента, который недоступен на сервере во время выполнения.Таким образом, вы также можете проверить свой код на наличие ненужных серверных зависимостей от клиентских классов GWT (например, HasWidgets).

0 голосов
/ 01 сентября 2016

Vaadin опубликовал дополнение, чтобы исправить это, см. https://vaadin.com/directory#!addon/vaadin-application-server-class-loader-workaround

...