无法在eclipse中加载maven项目中的Widgetset

时间:2013-09-14 08:34:42

标签: eclipse maven gwt web-applications vaadin

我在eclipse中使用maven创建了一个vaadin Web应用程序。特别是我使用了book of vaadin (20.3.4)中描述的原型vaadin-archetype-touchkit。如果不对默认生成的代码进行任何更改,我已使用目标clean package的maven运行它。然后我编译了Widgetset。当我尝试在Tomcat 7上运行它时,我收到来自网页的奇怪消息:

Failed to load the WidgetSet:
<WidgetSet Path>.DefaultWidgetSet.nocache.js 

在控制台上,我也看到了错误消息:

INFO: Requested resource [/VAADIN/themes/reindeer/styles.css] not found from filesystem or through class loader. Add widgetset and/or theme JAR to your classpath or add files to WebContent/VAADIN folder.

INFO: Requested resource [/VAADIN/widgetsets/com.vaadin.DefaultWidgetSet/com.vaadin.DefaultWidgetSet.nocache.js] not found from filesystem or through class loader. Add widgetset and/or theme JAR to your classpath or add files to WebContent/VAADIN folder.

INFO: Requested resource [/VAADIN/themes/reindeer/styles.css] not found from filesystem or through class loader. Add widgetset and/or theme JAR to your classpath or add files to WebContent/VAADIN folder.

虽然我已经在教程中读到web.xml中没有必要,但是maven还没有创建vaadin 7文件。我已阅读similar question,建议在web.xml文件中进行调整。我是否应该推断我还要手动创建web.xml文件?

我也觉得很奇怪,当我为典型的vaadin 7应用程序尝试使用原型的相同过程时,它运行正常。由于我必须开发一个触摸套件应用程序,我将不胜感激任何建议 - 想法与我原始尝试中可能遗漏的内容相吻合。

3 个答案:

答案 0 :(得分:4)

如果您使用servlet 3.0配置(按照4.8.3. WEB Servlet Class所述注释您的servlet),则不再需要

通常以这种方式配置您的Vaadin 3.0 Servlet配置:

public class MyUI extends UI {

      @WebServlet(value = "/*", asyncSupported = true)
      @VaadinServletConfiguration(productionMode = false, ui = MyUI.class)
      public static class Servlet extends VaadinServlet {
      }

      @Override
      protected void init(VaadinRequest request) {
            //your init stuff here
      }
}

使用 @VaadinServletConfiguration 作为设置vaadin相关参数的快捷方式。

现在,如果您的项目中没有vaadin插件(因此您正在使用默认的widgetset),那就是它,不再需要其他工作。

相反,如果您使用自定义插件,则必须通过以这种方式添加widgetset参数来指定要在@VaadinServletConfiguration中使用的窗口小部件集

public class MyUI extends UI {

      @WebServlet(value = "/*", asyncSupported = true)
      @VaadinServletConfiguration(widgetset="com.bla.bla.MyWidgetSet",productionMode = false, ui = MyUI.class)
      public static class Servlet extends VaadinServlet {
      }

      @Override
      protected void init(VaadinRequest request) {
            //your init stuff here
      }
}

否则您必须像往常一样手动创建web.xml ...

说到maven,我认为你只需要运行 mvn clean package ,在包阶段,maven-vaadin-plugin会自动编译你的widgetset。

答案 1 :(得分:3)

对我来说,将以下内容添加到pom.xml有帮助:

    <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>vaadin-client-compiled</artifactId>
        <version>${vaadin.version}</version>
    </dependency>

答案 2 :(得分:0)

这是项目根目录中的自述文件

要编译整个项目,请运行&#34; mvn install&#34;。 要运行该应用程序,请运行&#34; mvn jetty:run&#34;并打开http://localhost:8080/

要开发主题,只需更新相关主题文件并重新加载应用程序即可。 预编译主题会在运行时消除自动主题更新 - 有关详细信息,请参阅下文。

调试客户端代码    - 运行&#34; mvn vaadin:run-codeserver&#34;在应用程序运行时在单独的控制台上    - 在应用程序的调试窗口中激活超级开发模式

生成可部署的生产模式WAR: - 在servlet类配置中将productionMode更改为true(嵌套在UI类中) - 运行&#34; mvn clean vaadin:compile-theme package&#34;   - 请参阅下面的详细信息。跑步&#34; mvn clean&#34;删除预编译的主题。 - 用&#34; mvn jetty:run-war

进行测试

按照说明操作,您将获得正确的页面:)