Ошибка компиляции проекта Vaadin7 с Maven + Tomcat7

Привет, я работаю с проектом Vaadin7.

У меня возникли трудности с компиляцией проекта.

Я очень расстроился, так как не смог запустить простой проект HelloWorld :-(

Я использую eclipse Kepler на OSX.

То, что я сделал и попробовал, ниже.

  • Сделал проект Maven с некоторыми опциями (добавьте vaadin-archtype-application).
  • Добавьте <dependency>vaadin-charts в pom.xml. Я следую руководству здесь. Ссылка: https://vaadin.com/book/vaadin7/-/page/addons.maven.html
  • Запустите этот проект с Tomcat, и я получил сообщение об ошибке о наборе виджетов. Итак, я сделал сборку maven, как сказала эта ссылка. Ссылка: Не удалось загрузить наборы виджетов в проекте maven в eclipse
  • Запустить проект как Maven clean
  • нашел два предупреждения о версии (apache-maven-compiler-plugin, org-mortbat-jetty), поэтому добавляю теги. каждый из них 3.1 и 8.1.15.v20140411 (нашел это на сайте репозитория Maven)
  • вроде бы все хорошо, но Мой проект показывает 404 error

Нет web.xml и я действительно не знаю, где это исправить.

Я думаю, что это довольно близко, чтобы посмотреть кнопку «щелчок» в Chrome, но не могу найти.

Мой журнал ошибок ниже

SEVERE: ClassNotFoundException while loading persisted sessions: java.lang.ClassNotFoundException: org.owls.test.VaadinMay.MyVaadinUI
java.lang.ClassNotFoundException: org.owls.test.VaadinMay.MyVaadinUI
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:270)
    at org.apache.catalina.util.CustomObjectInputStream.resolveClass(CustomObjectInputStream.java:76)
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
    at java.io.ObjectInputStream.readClass(ObjectInputStream.java:1483)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1333)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
    at java.util.HashMap.readObject(HashMap.java:1183)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
    at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
    at com.vaadin.server.VaadinSession.readObject(VaadinSession.java:1436)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
    at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1597)
    at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1062)
    at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:284)
    at org.apache.catalina.session.StandardManager.load(StandardManager.java:204)
    at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:491)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5443)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

Jun 01, 2014 10:39:41 PM org.apache.catalina.session.StandardManager startInternal
SEVERE: Exception loading sessions from persistent storage
java.lang.ClassNotFoundException: org.owls.test.VaadinMay.MyVaadinUI
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:270)
    at org.apache.catalina.util.CustomObjectInputStream.resolveClass(CustomObjectInputStream.java:76)
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
    at java.io.ObjectInputStream.readClass(ObjectInputStream.java:1483)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1333)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
    at java.util.HashMap.readObject(HashMap.java:1183)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
    at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
    at com.vaadin.server.VaadinSession.readObject(VaadinSession.java:1436)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
    at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1597)
    at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1062)
    at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:284)
    at org.apache.catalina.session.StandardManager.load(StandardManager.java:204)
    at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:491)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5443)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

Спасибо, что поделились моей проблемой :D

============ Отредактировано 02.06.2014 =======================

Мой maven clean выглядит нормально. я приложил логи

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Vaadin Web Application 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ VaadinMvn ---
[INFO] Deleting /Users/juneyoungoh/Documents/vaadinwork/VaadinMvn/target
[INFO] 
[INFO] --- vaadin-maven-plugin:7.1.8:clean (default) @ VaadinMvn ---
[INFO] auto discovered modules [org.owls.test.VaadinMvn.AppWidgetSet]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.496s
[INFO] Finished at: Mon Jun 02 21:32:12 KST 2014
[INFO] Final Memory: 6M/81M
[INFO] ------------------------------------------------------------------------

========= Редактировать #02 ========================

Верхний - чистый Maven, и я нашел ошибку в сборке Maven.

Я думаю, это может быть подсказкой.

[INFO] --- vaadin-maven-plugin:7.1.8:update-theme (default) @ VaadinMvn ---
[INFO] Updating theme VAADIN/themes/mytheme
[ERROR] Jun 02, 2014 10:22:16 PM com.vaadin.server.widgetsetutils.ClassPathExplorer getAvailableWidgetSetsAndStylesheets
[ERROR] INFO: Widgetsets found from classpath:
[ERROR]     com.vaadin.DefaultWidgetSet in jar:file:/Users/juneyoungoh/.m2/repository/com/vaadin/vaadin-client/7.1.8/vaadin-client-7.1.8.jar!/
[ERROR]     com.vaadin.addon.charts.Widgetset in jar:file:/Users/juneyoungoh/.m2/repository/com/vaadin/addon/vaadin-charts/1.0.0/vaadin-charts-1.0.0.jar!/
[ERROR]     com.vaadin.addon.timeline.gwt.TimelineWidgetSet in jar:file:/Users/juneyoungoh/.m2/repository/com/vaadin/addon/vaadin-charts/1.0.0/vaadin-charts-1.0.0.jar!/
[ERROR]     org.owls.test.VaadinMvn.AppWidgetSet in file:/Users/juneyoungoh/Documents/vaadinwork/VaadinMvn/src/main/java
[ERROR] Addon styles found from classpath:
[ERROR] 
[ERROR] Jun 02, 2014 10:22:17 PM com.vaadin.server.widgetsetutils.ClassPathExplorer getAvailableWidgetSetsAndStylesheets
[ERROR] INFO: Search took 27ms

И я нашел сообщение на форумах Vaadin. но это не похоже на мою проблему. речь идет об установке Айви. Однако ссылка ниже

https://vaadin.com/forum/#!/thread/3529974


person Juneyoung Oh    schedule 01.06.2014    source источник
comment
Используете ли вы подключаемый модуль Vaadin для Eclipse?   -  person Basil Bourque    schedule 01.06.2014
comment
@BasilBourque Я не уверен. Я установил vaadin через «установить новое программное обеспечение», а не через «рынок eclipse — плагин vaadin для eclipse». это может быть проблемой?   -  person Juneyoung Oh    schedule 02.06.2014
comment
Теоретически вы можете создать проект Vaadin напрямую через Maven. Некоторые люди сообщают об успехе. Но я настоятельно рекомендую использовать подключаемый модуль Vaadin для Eclipse или более новый Подключаемый модуль Vaadin для Netbeans. Я предпочитаю NetBeans, но оба работают хорошо. Должно сделать вашу работу Vaadin намного проще. Еще один совет: теперь все свои разработки я делаю на виртуальных машинах. Облегчает эксперименты с различными настройками. В настоящее время Parallels 9 на Mavericks с Mountain Lion на виртуальных машинах (потому что я использую Mountain Lion).   -  person Basil Bourque    schedule 02.06.2014
comment
Для получения информации об установке и использовании плагина Vaadin прочитайте Книгу Vaadin и форумы.   -  person Basil Bourque    schedule 02.06.2014
comment
@BasilBourque Спасибо за объяснения. Я попытался установить «плагин Vaadin для eclipse» через рынок eclipse, но не смог. Я думаю, причина в том, что я уже установил часть пакета с «установить новое программное обеспечение». Я переустановлю eclipse и vaadin, когда вернусь домой: D И выложу результат. Однако пока я не буду использовать Netbeans, так как не знаком с этим. Спасибо еще раз   -  person Juneyoung Oh    schedule 02.06.2014
comment
@JuneyoungOh Во-первых, компиляция на стороне клиента выполняется правильно? Команда mvn clean install завершается с сообщением BUILD SUCCESS? Часто пользуюсь vaadin-archtype-application и чартами и все работает   -  person Skizzo    schedule 02.06.2014
comment
@Skizzo Спасибо. На самом деле сборка mvn выполнена успешно. Я вижу BUILD SUCCESS в консоли. Я хотел бы добавить свой журнал сборки консоли в сообщение, но, к сожалению, сейчас я переустанавливаю eclipse.   -  person Juneyoung Oh    schedule 02.06.2014
comment
@BasilBourque Я переустановил eclipse и установил плагин vaadin с рынка eclipse. Однако он по-прежнему не может найти класс (который является исходным классом без каких-либо манипуляций). Есть ли варианты без Netbeans?   -  person Juneyoung Oh    schedule 02.06.2014


Ответы (1)


1) SEVERE: ClassNotFoundException while loading persisted sessions:java.lang.ClassNotFoundException: org.owls.test.VaadinMay.MyVaadinUI появляется, потому что Tomcat пытается десериализовать ранее сохраненный сеанс, и вы, возможно, тем временем изменили имена некоторых классов. Это можно отключить глобально, отредактировав файл CATALINA_HOME/conf/context.xml. Вы должны найти строку, читающую "Раскомментируйте это, чтобы отключить сеанс..." Подробнее об этом здесь

2) HTTP 404 не должно иметь ничего общего с пунктом выше и, скорее всего, связано с конфигурацией вашего сервлета. Поскольку у вас нет web.xml, все должно быть настроено внутри вашего пользовательского интерфейса. Откройте MyVaadinUi или то, во что вы его переименовали, и просмотрите конфигурацию сопоставления пути URL, как описано в документация vaadin (прокрутите вниз до главы 4.8.5 Сопоставление сервлетов с шаблонами URL). Убедитесь, что вы получаете доступ к приложению на localhost в соответствии с этой конфигурацией, и все должно быть в порядке.

person Morfic    schedule 02.06.2014
comment
Спасибо. Думаю, вы прекрасно поняли, с чем я столкнулся. Однако у меня возник дополнительный вопрос по поводу шага 2. Вы сказали, что смотрите документацию vaadin 4.8.5. Я могу найти класс пользовательского интерфейса, но не могу выполнить инструкцию, поскольку, как вы указали, у меня нет web.xml. Мои аннотации связаны с набором виджетов (который почти пуст, но дополнен диаграммой). Может быть, у вас есть какие-нибудь намеки для меня? - person Juneyoung Oh; 05.06.2014
comment
Это нормально, поскольку вы, вероятно, не используете дополнительные виджеты в своем проекте. @WebServlet(value = {"/*", "/VAADIN/*"}, asyncSupported = true) указывает URL-адрес доступа: http://localhost:8080/myproject/. Да, и еще одно: после компиляции проекта с помощью maven обязательно обновите проект в eclipse перед публикацией ресурсов в Tomcat, поскольку он не перезагружает автоматически изменения, сделанные в файловой системе другими инструментами, а иногда даже его плагином maven. - person Morfic; 05.06.2014