【问题标题】:Vaadin7 Project wirh Maven + Tomcat7 compile errorVaadin 7 Project with Maven + Tomcat7 编译错误
【发布时间】:2014-06-01 13:37:22
【问题描述】:

您好,我正在与 Vaadin7 项目合作。

我很难编译项目。

我真的很沮丧,因为我无法运行一个简单的 HelloWorld 项目 :-(

我在 OSX 上使用 eclipse Kepler。

我所做和尝试的如下。

  • 使用一些选项制作了一个 Maven 项目(添加 vaadin-archtype-application)。
  • <dependency>vaadin-charts 添加到 pom.xml。我按照这里的指南。链接:https://vaadin.com/book/vaadin7/-/page/addons.maven.html
  • 使用 Tomcat 运行此项目,我收到有关小部件集的错误消息。所以我做了 maven build 就像这个链接告诉的那样。链接:Failed to load Widgetsets in maven project in 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

============ 编辑于 2014 年 6 月 2 日 ========================

我的 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 clean,发现maven build有错误。

我认为这可能是一个线索。

[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

【问题讨论】:

  • 你在使用Vaadin plugin for Eclipse吗?
  • @BasilBourque 我不确定。我通过“安装新软件”而不是“Eclipse 市场 - Eclipse 的 vaadin 插件”安装了 vaadin。会不会有问题?
  • 理论上可以通过Maven直接创建Vaadin项目。有人报告说成功了。但我强烈建议使用Vaadin Plugin for Eclipse 或更新的Vaadin plugin for Netbeans。我更喜欢 NetBeans,但两者都运行良好。应该让您的 Vaadin 工作更加更轻松。另一个提示:我现在在虚拟机中进行所有开发。使尝试各种设置变得更加容易。目前 Parallels 9 on Mavericks 在 VM 中使用 Mountain Lion(因为我部署到 Mountain Lion)。
  • 有关安装和使用 Vaadin 插件的信息,请阅读 the Book Of Vaadin 和论坛。
  • @BasilBourque 感谢您的解释。我曾尝试通过 Eclipse 市场安装“Vaadin Eclipse 插件”但失败了。我认为我已经使用“安装新软件”安装了软件包的某些部分的原因。我回家后会重新安装 eclipse 和 vaadin:D 我会发布结果。但是,我暂时不会使用 Netbeans,因为我对此并不熟悉。再次感谢

标签: java eclipse maven tomcat vaadin7


【解决方案1】:

1) SEVERE: ClassNotFoundException while loading persisted sessions:java.lang.ClassNotFoundException: org.owls.test.VaadinMay.MyVaadinUI 弹出,因为 Tomcat 正在尝试反序列化以前保存的会话,而您可能同时更改了一些类名。这可以通过编辑CATALINA_HOME/conf/context.xml 文件来全局禁用。您应该找到一行阅读“取消注释以禁用会话...”更多关于此here

2) HTTP 404 应该与上述无关,很可能是由于您的 servlet 配置所致。因为你没有web.xml,所以一切都应该在你的 UI 中进行设置。打开MyVaadinUi,或者你重命名的任何东西,然后查看vaadin documentation中描述的URL路径映射配置(向下滚动到章节4.8.5 Servlet Mapping with URL Patterns)。确保您按照此配置访问localhost 上的应用程序,您应该没问题。

【讨论】:

  • 谢谢。我想你完全理解我所面临的。但是,我还有一个关于第 2 步的问题。你说观看 vaadin 文档 4.8.5。我可以找到 UI 类,但我不能放弃指令,因为正如你指出的那样,我没有 web.xml。我的注释与小部件集链接(几乎是空的,但图表插件)。也许你对我有什么提示?
  • 这很好,因为您可能没有在项目中使用其他小部件。 @WebServlet(value = {"/*", "/VAADIN/*"}, asyncSupported = true) 指定访问 url:http://localhost:8080/myproject/。哦,还有一件事,在用 maven 编译你的项目之后,一定要在将资源发布到 Tomcat 之前在 eclipse 中刷新项目,因为它不会自动重新加载其他工具对文件系统所做的更改,有时甚至是它的 maven 插件。
猜你喜欢
  • 1970-01-01
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 2015-08-30
相关资源
最近更新 更多