Java 尝试加载Vaadin类时遇到错误

Java 尝试加载Vaadin类时遇到错误,java,eclipse,vaadin7,Java,Eclipse,Vaadin7,首先,今天是我使用Vaadin框架的第一天,我想用一个Vaadin示例进行实验。因此,我在com.example.addressbook包中的名为AddressbookUI.java的java文件中有我的示例代码 示例代码为: package com.example.addressbook; import com.vaadin.annotations.Theme; import com.vaadin.annotations.VaadinServletConfiguration; import

首先,今天是我使用Vaadin框架的第一天,我想用一个Vaadin示例进行实验。因此,我在com.example.addressbook包中的名为AddressbookUI.java的java文件中有我的示例代码

示例代码为:

package com.example.addressbook;

import com.vaadin.annotations.Theme;
import com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinServlet;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Label;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;

@SuppressWarnings("serial")
@Theme("addressbook")
public class AddressbookUI extends UI {

    public static class Servlet extends VaadinServlet {
    }

    @Override
    protected void init(VaadinRequest request) {
        final VerticalLayout layout = new VerticalLayout();
        layout.setMargin(true);
        setContent(layout);

        Button button = new Button("Click Me");
        button.addClickListener(new Button.ClickListener() {
            public void buttonClick(ClickEvent event) {
                layout.addComponent(new Label("Thank you for clicking"));
            }
        });
        layout.addComponent(button);
    }

}
我的web.xml文件包含以下内容

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>AddressBook</display-name>
  <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>

  <servlet>
    <servlet-name>ThankU</servlet-name>
    <servlet-class>com.example.addressbook.AddressbookUI</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ThankU</servlet-name>
    <url-pattern>/thanku</url-pattern>
  </servlet-mapping>

</web-app>

通讯录
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
谢谢
com.example.addressbook.AddressbookUI
谢谢
/谢谢
我正在使用Eclipse4.3IDE,并在服务器上使用Tomcat7.0。当我尝试运行代码时,出现以下错误:

HTTP状态500-Class com.example.addressbook.AddressbookUI不是 Servlet


类型异常报告

消息类com.example.addressbook.AddressbookUI不是Servlet

说明服务器遇到阻止它的内部错误 不履行这一要求

例外情况

javax.servlet.ServletException:类 com.example.addressbook.AddressbookUI不是Servlet org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) java.lang.Thread.run(未知源)

根本原因

java.lang.ClassCastException:com.example.addressbook.AddressbookUI 无法转换为javax.servlet.servlet org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) java.lang.Thread.run(未知源)

我不明白问题是什么,所以我提出了这个问题。我尝试了那里建议的解决方案,但没有任何改进。WEB-INF/lib中没有
vaadin xx.yy.zz.jar
文件。事实上,lib是空的


这里有什么问题,如何解决?

在web.xml中,通过以下方式进行更改:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
    <display-name>Vaadin Web Application</display-name>
    <context-param>
       <description>Vaadin production mode</description>
       <param-name>productionMode</param-name>
       <param-value>false</param-value>
    </context-param>
    <servlet>
        <servlet-name>Vaadin</servlet-name>
        <servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
        <init-param>
           <description>Vaadin UI to display</description>
           <param-name>UI</param-name>
           <param-value>com.example.addressbook.AddressbookUI</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>Vaadin</servlet-name>
        <url-pattern>/thanku</url-pattern>
    </servlet-mapping>
</web-app>

Vaadin Web应用程序
瓦丁生产模式
生产模式
假的
瓦丁
com.vaadin.server.VaadinServlet
要显示的Vaadin用户界面
用户界面
com.example.addressbook.AddressbookUI
瓦丁
/谢谢