com/google/gwt/user/client/ui/Composite.class error

Hello, I am trying to create custom widget in gwt to use in vaadin, but I can’t seems to deploy war in tomcat.

If I try it now, I get this error when war loads up:


org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to read candidate component class: file [C:\Users\Peter\Documents\bach-dataframe\TomcatDeploy\wtpwebapps\locations-ui\WEB-INF\classes\cz\bach\common_sources\locations\ui\widgetset\client\ui\MapyCZWidget.class]
; nested exception is java.io.FileNotFoundException: class path resource [com/google/gwt/user/client/ui/Composite.class]
 cannot be opened because it does not exist
Offending resource: file [C:\Users\Peter\Documents\bach-dataframe\TomcatDeploy\wtpwebapps\locations-ui\WEB-INF\classes\META-INF\spring\application-context.xml]
; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [C:\Users\Peter\Documents\bach-dataframe\TomcatDeploy\wtpwebapps\locations-ui\WEB-INF\classes\cz\bach\common_sources\locations\ui\widgetset\client\ui\MapyCZWidget.class]
; nested exception is java.io.FileNotFoundException: class path resource [com/google/gwt/user/client/ui/Composite.class]
 cannot be opened because it does not exist
	at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
	at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
	at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76)
	at org.springframework.data.repository.config.RepositoryBeanDefinitionParser.handleError(RepositoryBeanDefinitionParser.java:82)
	at org.springframework.data.repository.config.RepositoryBeanDefinitionParser.parse(RepositoryBeanDefinitionParser.java:75)
	at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)
	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1419)
	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1409)
	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:184)
	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140)
	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
	at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)
	at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4701)
	at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5204)
	at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5199)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [C:\Users\Peter\Documents\bach-dataframe\TomcatDeploy\wtpwebapps\locations-ui\WEB-INF\classes\cz\bach\common_sources\locations\ui\widgetset\client\ui\MapyCZWidget.class]
; nested exception is java.io.FileNotFoundException: class path resource [com/google/gwt/user/client/ui/Composite.class]
 cannot be opened because it does not exist
	at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:261)
	at org.springframework.data.repository.config.RepositoryConfigurationSourceSupport.getCandidates(RepositoryConfigurationSourceSupport.java:53)
	at org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport.getRepositoryConfigurations(RepositoryConfigurationExtensionSupport.java:53)
	at org.springframework.data.repository.config.RepositoryBeanDefinitionParser.parse(RepositoryBeanDefinitionParser.java:67)
	... 29 more
Caused by: java.io.FileNotFoundException: class path resource [com/google/gwt/user/client/ui/Composite.class]
 cannot be opened because it does not exist
	at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158)
	at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:45)
	at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
	at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
	at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)
	at org.springframework.core.type.filter.AbstractTypeHierarchyTraversingFilter.match(AbstractTypeHierarchyTraversingFilter.java:105)
	at org.springframework.core.type.filter.AbstractTypeHierarchyTraversingFilter.match(AbstractTypeHierarchyTraversingFilter.java:76)
	at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.isCandidateComponent(ClassPathScanningCandidateComponentProvider.java:304)
	at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:238)
	... 32 more

which would suggest that I need to include gwt-user dependency, but that will fail to load altogether because of javax servlet jar validation problem.

What should I do?

Here is my custom widget:


public class MapyCZWidget extends Composite implements MapWidget {
	
	private static HeadElement head;
	public  static final String CLASSNAME             = "mapy-cz-widget";
	private static final String MAPY_CZ_SOURCE_API_V4 = "http://api4.mapy.cz/loader.js";
	private static final String MAPY_CZ_INIT_API_V4   = "Loader.load()";
	private static final String MAPY_CZ_ID            = "mapy.cz-insert-element";
	
	public static void injectScriptSource(String source){
		HeadElement head = getHead();
		ScriptElement element = createScriptElement();
		element.setSrc(source);
		head.appendChild(element);
	}
	
	public static void inject(String javascript) {
		HeadElement head = getHead();
		ScriptElement element = createScriptElement();
		element.setText(javascript);
		head.appendChild(element);
	}
	
	private static ScriptElement createScriptElement() {
		ScriptElement script = Document.get().createScriptElement();
		script.setAttribute("language", "javascript");
		return script;
	}
	
	private static synchronized HeadElement getHead() {
		if (head == null) {
			Element element = Document.get().getElementsByTagName("head").getItem(0);
			assert element != null : "HTML Head element required";
			HeadElement headElement = HeadElement.as(element);
			head = headElement;
		}
		return head;
	}
	
	String uidlId;
	ApplicationConnection client;
	SimplePanel panel;

	public MapyCZWidget(){
		super(); 
		
		inject(MAPY_CZ_SOURCE_API_V4);
		inject(MAPY_CZ_INIT_API_V4);
		
		setStyleName(CLASSNAME);
		
		panel = new SimplePanel();
		
		ScriptElement newScript = createScriptElement();
		newScript.setAttribute("language", "javascript");
		
		panel.add(new HTML("<div id=\""+ MAPY_CZ_ID +"\" style=\"width:100%; height:100%;\"></div>"));
		
		initWidget(panel);
	}
	
	@Override
	public native void setDoubleCoords(String element, double x, double y) /*-{
		var stred = SMap.Coords.fromWGS84(x, y);
		var mapa = new SMap(JAK.gel(element), stred, 10);
		mapa.addDefaultLayer(SMap.DEF_BASE).enable();
		mapa.addDefaultControls();
	}-*/;

	@Override
	public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
		if (client.updateComponent(this, uidl, true))
            return;
		
		this.client = client;

        // Save the UIDL identifier for the component
        uidlId = uidl.getId();
        
        setDoubleCoords(MAPY_CZ_ID, uidl.getDoubleVariable("x"), uidl.getDoubleVariable("y"));
	}



}