Vaadin ServletException:无法加载应用程序类

当我尝试通过localhost / testVaadin /在浏览器中加载servlet时,我有一个vaadin和servlet错误

我想执行此示例以了解vaadin的工作原理,因为我必须使用活动资源管理器实现BPMN,它使用vaadin作为UI框架。

我附加了代码,web.xml加上抛出的exception。

package com.example.testvaadin; import com.vaadin.Application; import com.vaadin.data.Property; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.util.IndexedContainer; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Form; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.HorizontalSplitPanel; import com.vaadin.ui.Table; import com.vaadin.ui.TextField; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Window; 

我的课

 public class SimpleAddressBook extends Application { 

变量

 private static String[] fields = { "First Name", "Last Name", "Company", "Mobile Phone", "Work Phone", "Home Phone", "Work Email", "Home Email", "Street", "Zip", "City", "State", "Country" }; private static String[] visibleCols = new String[] { "Last Name", "First Name", "Company" }; private Table contactList = new Table(); private Form contactEditor = new Form(); private HorizontalLayout bottomLeftCorner = new HorizontalLayout(); private Button contactRemovalButton; private IndexedContainer addressBookData = createDummyData(); 

function

 @Override public void init() { initLayout(); initContactAddRemoveButtons(); initAddressList(); initFilteringControls(); } private void initLayout() { HorizontalSplitPanel splitPanel = new HorizontalSplitPanel(); setMainWindow(new Window("Address Book", splitPanel)); VerticalLayout left = new VerticalLayout(); left.setSizeFull(); left.addComponent(contactList); contactList.setSizeFull(); left.setExpandRatio(contactList, 1); splitPanel.addComponent(left); splitPanel.addComponent(contactEditor); contactEditor.setCaption("Contact details editor"); contactEditor.setSizeFull(); contactEditor.getLayout().setMargin(true); contactEditor.setImmediate(true); bottomLeftCorner.setWidth("100%"); left.addComponent(bottomLeftCorner); } private void initContactAddRemoveButtons() { // New item button bottomLeftCorner.addComponent(new Button("+", new Button.ClickListener() { public void buttonClick(ClickEvent event) { // Add new contact "John Doe" as the first item Object id = ((IndexedContainer) contactList .getContainerDataSource()).addItemAt(0); contactList.getItem(id).getItemProperty("First Name") .setValue("John"); contactList.getItem(id).getItemProperty("Last Name") .setValue("Doe"); // Select the newly added item and scroll to the item contactList.setValue(id); contactList.setCurrentPageFirstItemId(id); } })); // Remove item button contactRemovalButton = new Button("-", new Button.ClickListener() { public void buttonClick(ClickEvent event) { contactList.removeItem(contactList.getValue()); contactList.select(null); } }); contactRemovalButton.setVisible(false); bottomLeftCorner.addComponent(contactRemovalButton); } private void initAddressList() { contactList.setContainerDataSource(addressBookData); contactList.setVisibleColumns(visibleCols); contactList.setSelectable(true); contactList.setImmediate(true); contactList.addListener(new Property.ValueChangeListener() { public void valueChange(ValueChangeEvent event) { Object id = contactList.getValue(); contactEditor.setItemDataSource(id == null ? null : contactList .getItem(id)); contactRemovalButton.setVisible(id != null); } }); } private void initFilteringControls() { for (final String pn : visibleCols) { final TextField sf = new TextField(); bottomLeftCorner.addComponent(sf); sf.setWidth("100%"); sf.setInputPrompt(pn); sf.setImmediate(true); bottomLeftCorner.setExpandRatio(sf, 1); sf.addListener(new Property.ValueChangeListener() { public void valueChange(ValueChangeEvent event) { addressBookData.removeContainerFilters(pn); if (sf.toString().length() > 0 && !pn.equals(sf.toString())) { addressBookData.addContainerFilter(pn, sf.toString(), true, false); } getMainWindow().showNotification( "" + addressBookData.size() + " matches found"); } }); } } private static IndexedContainer createDummyData() { String[] fnames = { "Peter", "Alice", "Joshua", "Mike", "Olivia", "Nina", "Alex", "Rita", "Dan", "Umberto", "Henrik", "Rene", "Lisa", "Marge" }; String[] lnames = { "Smith", "Gordon", "Simpson", "Brown", "Clavel", "Simons", "Verne", "Scott", "Allison", "Gates", "Rowling", "Barks", "Ross", "Schneider", "Tate" }; IndexedContainer ic = new IndexedContainer(); for (String p : fields) { ic.addContainerProperty(p, String.class, ""); } // Create dummy data by randomly combining first and last names for (int i = 0; i < 1000; i++) { Object id = ic.addItem(); ic.getContainerProperty(id, "First Name").setValue( fnames[(int) (fnames.length * Math.random())]); ic.getContainerProperty(id, "Last Name").setValue( lnames[(int) (lnames.length * Math.random())]); } return ic; } } 

这是java部分

和web.xml是

   testVaadin   Vaadin production mode productionMode false   Testvaadin Application com.vaadin.terminal.gwt.server.ApplicationServlet   Vaadin application class to start application com.example.testvaadin.SimpleAddressBook    Testvaadin Application /*   index.html index.htm index.jsp default.html default.htm default.jsp   

我使用tomcat作为网络服务器(6.0.32)

所以错误是:

rg.apache.catalina.core.StandardWrapperValve调用GRAVE:Exception lors de l’allocation pour la servlet Testvaadin Application javax.servlet.ServletException:无法加载应用程序类:com.example.testvaadin.SimpleAddressBook at com.vaadin.terminal.gwt .server.ApplicationServlet.init(ApplicationServlet.java:71)位于org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809) )org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)org.apache.catalina.core.StandardHostValve。在Org.apache上的org.apache.catalina.valves.Error.ReportValve.invoke(ErrorReportValve.java:102)的org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)中调用(StandardHostValve.java:127) org.apache.co上的.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) yote.http11.Http11Processor.process(Http11Processor.java:859)org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588)at org.apache.tomcat.util.net.JIoEndpoint $ Worker。在java.lang.Thread.run上运行(JIoEndpoint.java:489)(Thread.java:662)

基本上错误消息是com.vaadin.terminal.gwt.server.ApplicationServlet试图在初始化期间加载com.example.testvaadin.SimpleAddressBook并且没有成功。

要解决此问题,请尝试以下操作

  • 检查应用程序部署是否成功,并且类: SimpleAddressBook确实位于servlet容器中的正确位置
  • 检查WEB-INF / lib中是否存在vaadin-xx.yy.zz.jar
  • 清理并重建整个项目