Guice + Vaadin = InstantiationException what went wrong?

When I try to configure Vaadin to work with Guice like this wiki: http://vaadin.com/wiki/-/wiki/Main/Integrating%20Vaadin%20with%20Guice%202.0?p_r_p_185834411_title=Integrating%20Vaadin%20with%20Guice%202.0

I get

java.lang.InstantiationException: pl.koziolekweb.vaadin.guice.servlet.GuiceApplicationServlet
	at java.lang.Class.newInstance0(Class.java:340)
	at java.lang.Class.newInstance(Class.java:308)
	at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153)
	at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:428)

My Guice servlet:

@SuppressWarnings("serial")
@Singleton
public class GuiceApplicationServlet extends AbstractApplicationServlet {

	protected Provider<Application> applicationProvider;

	@Inject
	public GuiceApplicationServlet(Provider<Application> applicationProvider) {
		super();
		this.applicationProvider = applicationProvider;
	}

	@Override
	protected Class<? extends Application> getApplicationClass()
			throws ClassNotFoundException {
		return Application.class;
	}

	@Override
	protected Application getNewApplication(HttpServletRequest request)
			throws ServletException {
		return applicationProvider.get();
	}
}

Configuration:


public class VaadinGuiceConfiguration extends GuiceServletContextListener {

	@Override
	protected Injector getInjector() {
		return Guice.createInjector(new MyServletModule());
	}

}

module:


public class MyServletModule extends ServletModule {
	
	@Override
	protected void configureServlets() {

		serve("/*").with(GuiceApplicationServlet.class);

		bind(ListBookView.class).to(ListBookViewImpl.class);
		bind(BookDao.class).to(SimpleBookDao.class);
		bind(ListBookPresenter.class).to(ListBookPresenterImpl.class);
		bind(Application.class).toProvider(ApplicationProvider.class).in(
				ServletScopes.SESSION);
	}
}

and web.xml


<filter>
		<filter-name>guiceFilter</filter-name>
		<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>guiceFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<listener>
		<listener-class>pl.koziolekweb.vaadin.guice.servlet.VaadinGuiceConfiguration</listener-class>
	</listener>

	<servlet>
		<servlet-name>VAS</servlet-name>
		<servlet-class>pl.koziolekweb.vaadin.guice.servlet.GuiceApplicationServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>VAS</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>

What is wrong? Why tutorial doesn’t work? Please help.

Try removing the servlet and servlet mappings from the web.xml.

regards
tj