Vaadin ServletException:无法加载应用程序类 [英] Vaadin ServletException: Failed to load application class

查看:201
本文介绍了Vaadin ServletException:无法加载应用程序类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试通过localhost / testVaadin /



在浏览器中加载servlet时,我有一个vaadin和servlet错误我想执行此示例来查看vaadin因为我必须使用活动浏览器来实现一个BPMN,它使用vaadin作为一个UI框架。



我附加了代码,而web.xml加上抛出的异常。

  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.Horizo​​ntalLayout;
import com.vaadin.ui.Horizo​​ntalSplitPanel;
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 ,家庭电话,工作电子邮件,
家庭电子邮件,街,邮政编码,城市,州,国家};
private static String [] visibleCols = new String [] {Last Name,
First Name,Company};


private表contactList = new Table();
private Form contactEditor = new Form();
private Horizo​​ntalLayout bottomLeftCorner = new Horizo​​ntalLayout();
private Button contactRemovalButton;
private IndexedContainer addressBookData = createDummyData();

功能

  @Override 
public void init(){
initLayout();
initContactAddRemoveButtons();
initAddressList();
initFilteringControls();
}

private void initLayout(){
Horizo​​ntalSplitPanel splitPanel = new Horizo​​ntalSplitPanel();
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(联系人详细信息编辑器);
contactEditor.setSizeFull();
contactEditor.getLayout()。setMargin(true);
contactEditor.setImmediate(true);
bottomLeftCorner.setWidth(100%);
left.addComponent(bottomLeftCorner);
}

private void initContactAddRemoveButtons(){
//新建项目按钮
bottomLeftCorner.addComponent(new Button(+,
new Button) ClickListener(){
public void buttonClick(ClickEvent event){
//添加新联系人John Doe作为第一个项目
Object id =((IndexedContainer)contactList
。 getContainerDataSource())。addItemAt(0);
contactList.getItem(id).getItemProperty(First Name)
.setValue(John);
contactList.getItem .getItemProperty(Last Name)
.setValue(Doe);

//选择新添加的项目并滚动到项目
contactList.setValue(id) ;
contactList.setCurrentPageFirstItemId(id);
}
}));

//删除项目按钮
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&&p!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马格};
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,);
}

//通过随机组合第一个和最后一个名字
创建虚拟数据(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是

 <?xml version = 1.0encoding =UTF-8?> 
< web-app id =WebApp_IDversion =2.4
xmlns =http://java.sun.com/xml/ns/j2eexmlns: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> testVaadin< / display-name>
< context-param>
< description>
Vaadin生产模式< / description>
< param-name> productionMode< / param-name>
< param-value> false< / param-value>
< / context-param>
< servlet>
< servlet-name> Testvaadin应用程序< / servlet-name>
< servlet-class> com.vaadin.terminal.gwt.server.ApplicationServlet< / servlet-class>
< init-param>
< description>
Vaadin应用程序类开始< / description>
< param-name> application< / param-name>
< param-value> com.example.testvaadin.SimpleAddressBook< / param-value>
< / init-param>
< / servlet>
< servlet-mapping>
< servlet-name> Testvaadin应用程序< / servlet-name>
< url-pattern> / *< / url-pattern>
< / servlet-mapping>
< welcome-file-list>
< welcome-file> index.html< / welcome-file>
< welcome-file> index.htm< / welcome-file>
< welcome-file> index.jsp< / welcome-file>
< welcome-file> default.html< / welcome-file>
< welcome-file> default.htm< / welcome-file>
< welcome-file> default.jsp< / welcome-file>
< / welcome-file-list>
< / web-app>

我使用tomcat作为webserver(6.0.32)



所以错误是:


rg.apache.catalina.core.StandardWrapperValve调用GRAVE:异常lors de l'分配倾诉servlet Testvaadin应用程序javax.servlet.ServletException:无法在org.apache上的com.vaadin.terminal.gwt.server.ApplicationServlet.init(ApplicationServlet.java:71)中加载应用程序类:com.example.testvaadin.SimpleAddressBook。在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809))上的catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173) 129)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)在org.apache.catalina.valves.ErrorReportValve .invoke(ErrorReportValve.java:102)在org.apache.catalina.core.Sta在org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)的org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)上的ndardEngineValve.invoke(StandardEngineValve.java:109)在org .apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588)在org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489)在java.lang.Thread.run (Thread.java:662)



解决方案

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



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




  • 检查应用程序部署成功和类: SimpleAddressBook 真的在你的servlet容器中的正确位置

  • 检查是否有一个 vaadin-xx.yy.zz.jar 在WEB-INF / lib

  • 清理并重建整个项目


I have a vaadin and servlet error when i try to load the servlet in the browser by localhost/testVaadin/

I want to execute this sample to see how vaadin works, because I have to implemnt an BPMN with activity explorer, which is using vaadin as a UI framework.

I attached the code, and web.xml plus the thrown 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;

my class

public class SimpleAddressBook extends Application {

variables

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();

functions

@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;
}

}

this is the java part

and the web.xml is

<?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>testVaadin</display-name>
<context-param>
    <description>
    Vaadin production mode</description>
    <param-name>productionMode</param-name>
    <param-value>false</param-value>
</context-param>
<servlet>
    <servlet-name>Testvaadin Application</servlet-name>
    <servlet-class>com.vaadin.terminal.gwt.server.ApplicationServlet</servlet-class>
    <init-param>
        <description>
        Vaadin application class to start</description>
        <param-name>application</param-name>
        <param-value>com.example.testvaadin.SimpleAddressBook</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>Testvaadin Application</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

and i use tomcat as webserver (6.0.32)

So the error is :

rg.apache.catalina.core.StandardWrapperValve invoke GRAVE: Exception lors de l'allocation pour la servlet Testvaadin Application javax.servlet.ServletException: Failed to load application class: com.example.testvaadin.SimpleAddressBook at com.vaadin.terminal.gwt.server.ApplicationServlet.init(ApplicationServlet.java:71) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662)

解决方案

Basically the error message is saying com.vaadin.terminal.gwt.server.ApplicationServlet tried to load com.example.testvaadin.SimpleAddressBook during initialisation and didn't succeed.

To resolve this try the following:

  • check if the application deployment succeeded and the class: SimpleAddressBook is really in the right place in your servlet container
  • check if there is a vaadin-xx.yy.zz.jar in WEB-INF/lib
  • clean and rebuild the entire project

这篇关于Vaadin ServletException:无法加载应用程序类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆