2016-01-31 115 views
0

我想将编译的Servlet类部署到Apache Tomcat服务器8.0.30上。在Tomcat上部署Servlet 8.0.30

,但我得到以下异常:

javax.servlet.ServletException: Error instantiating servlet class HelloWorld 

    java.lang.ClassNotFoundException: HelloWorld 

我的tomcat webapps/ROOT/文件夹中不包含类文件夹,所以我创建了一个与复制HelloWorld.class进去。我在web.xml添加了以下几行:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    version="3.1" 
    metadata-complete="true"> 

    <display-name>Welcome to Tomcat</display-name> 
    <description> 
    Welcome to Tomcat 
    </description> 
<servlet> 
    <servlet-name>HelloWorld</servlet-name> 
    <servlet-class>HelloWorld</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>HelloWorld</servlet-name> 
    <url-pattern>/HelloWorld</url-pattern> 
</servlet-mapping> 
</web-app> 

谁能告诉我我做错了什么?

@wero:这是我的HelloWorld.java的内容:

// Import required java libraries 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

// Extend HttpServlet class 
public class HelloWorld extends HttpServlet { 

    private String message; 

    public void init() throws ServletException 
    { 
     // Do required initialization 
     message = "Hello World"; 
    } 

    public void doGet(HttpServletRequest request, 
        HttpServletResponse response) 
      throws ServletException, IOException 
    { 
     // Set response content type 
     response.setContentType("text/html"); 

     // Actual logic goes here. 
     PrintWriter out = response.getWriter(); 
     out.println("<h1>" + message + "</h1>"); 
    } 

    public void destroy() 
    { 
     // do nothing. 
    } 
} 

回答

0

当Tomcat已经开始有在你的应用程序不class文件。 Tomcat正在启动时部署,或者在运行时手动部署。之后,上下文应该重新加载。你不能只将你的类复制到tomcat webapps文件夹而不加载它们。

阅读Tomcat docs how to deploy your application

部署是用于安装一个Web应用程序 (无论是第三方WAR或您自己的自定义Web应用程序 )到Tomcat服务器的过程的术语。

Web应用程序部署可以在多个Tomcat服务器内以多种方式 完成:

  • 静态(Web应用程序是安装在Tomcat启动前)
  • 动态(通过直接操纵已部署的Web应用程序(依靠自动部署功能)或远程通过使用Tomcat管理器Web应用程序

Tomcat管理器是一个Web应用程序t可以交互使用 (通过HTML GUI)或以编程方式(通过基于URL的API)部署和管理Web应用程序。

依靠 Manager Web应用程序执行部署的方法有很多。 Apache Tomcat为Apache Ant 构建工具提供任务。 Apache Tomcat Maven插件项目提供了与Apache Maven的集成 。还有一个称为客户端部署者的工具, 可以从命令行使用,并提供额外的功能,例如编译和验证Web应用程序为 以及将Web应用程序打包为Web应用程序资源(WAR) 文件。

0

您需要将文件放入正确的位置。 Java类文件需要放入WEB-INF/classes:

webapps/ROOT/WEB-INF/web.xml 
webapps/ROOT/WEB-INF/classes/HelloWorld.class 

然后启动Tomcat并查看Tomcat日志中是否有错误。

+0

我把文件放到你提到的地方,然后我重新启动了服务器,但仍然出现错误:请求的资源不可用。 – user1858851

+0

@ user1858851然后显示'HelloWorld.java' – wero

+0

请在编辑中找到HelloWorld.java。 – user1858851

0

明白了。我创建的classes文件夹是“C”,其中tomcat期望“c”这样的错误。