我正在使用我的Vaadin项目的响应式附加组件。我编译了小部件,我能够在Eclipse上运行该项目。我使用的版本是Vaadin 7.1.9和Eclipse Juno。
然后当我尝试导出到war文件并将其部署在Jetty 8和Jetty 9上时。我收到了以下错误。
在Jetty 8中,我回来了: 我可以启动jetty,但是当我尝试从浏览器访问时,我得到了以下内容:
Widgetset does not contain implementation for com.vaadin.addon.responsive.Responsive.
Check its component connector's @Connect mapping, widgetsets GWT module description file and re-compile your widgetset.
In case you have downloaded a vaadin add-on package, you might want to refer to add-on instructions.
在Jetty 9中,我回来了:
java.lang.IllegalStateException: Multiple servlets map to path: /*
at org.eclipse.jetty.servlet.ServletHandler.updateMappings(ServletHandle
r.java:1383)
at org.eclipse.jetty.servlet.ServletHandler.setServletMappings(ServletHa
ndler.java:1480)
at org.eclipse.jetty.servlet.ServletHandler.addServletMapping(ServletHan
dler.java:916)
at org.eclipse.jetty.annotations.WebServletAnnotation.apply(WebServletAn
请注意:我有另一个war文件,它在Jetty 8和Jetty 9中都成功执行。此外,我的项目在没有该widgetset的情况下工作。
使用Jetty 8,我再次尝试重新编译小部件,但我收到了同样的错误。
这是我的web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Demo</display-name>
<context-param>
<description>Vaadin production mode</description>
<param-name>productionMode</param-name>
<param-value>false</param-value>
</context-param>
<servlet>
<servlet-name>Myrmnui Application</servlet-name>
<servlet-class>com.demo.main.DemoResponsiveAppServlet</servlet-class>
<init-param>
<description>Vaadin UI class</description>
<param-name>UI</param-name>
<param-value>com.demo.main.MainUI</param-value>
</init-param>
<init-param>
<description>
Application widgetset</description>
<param-name>widgetset</param-name>
<param-value>com.demo.main.widgetset.DemoWidgetset</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Application</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Application</servlet-name>
<url-pattern>/VAADIN/*</url-pattern>
</servlet-mapping>
</web-app>
请告诉我如何构建war文件并与widget一起部署。我用eclipse导出到war文件。为了确保小部件文件存在,我解压缩了war文件并且它们存在。这些文件的文件大小不是。
提前致谢。
答案 0 :(得分:0)
错误......
`java.lang.IllegalStateException: Multiple servlets map to path: /*`
...正在告诉,因为它指向一个无效的WAR部署,其中有多个servlet都映射到相同的路径规范。这在Servlet API中是不允许的。
可能其中一个应该是过滤器吗?
或者某些图书馆引入了更多与您冲突的@WebServlet(value={"/*"})
条目?
如果您针对指定的记录器DEBUG
设置FINEST
日志记录(或java.util.logging
,如果使用org.eclipse.jetty.servlet.ServletHandler
),则可以看到有关正在发生的事情的一些细节。
但是,错误消息可以改进,因此提交了一个错误消息来改进它:https://bugs.eclipse.org/424284