我正在尝试将已编译的Servlet类部署到Apache Tomcat服务器8.0.30上。
但我得到以下例外:
javax.servlet.ServletException: Error instantiating servlet class HelloWorld
java.lang.ClassNotFoundException: HelloWorld
我的tomcat webapps/ROOT/
文件夹不包含classes文件夹,所以我创建了一个并将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 :(得分:0)
启动tomcat后,您的应用中没有class
个文件。 Tomcat在启动时部署期间加载类,或者如果您在运行时手动部署它。之后应该重新加载上下文。您只能将类复制到tomcat webapps
文件夹而不加载它们。
阅读Tomcat docs how to deploy your application。
部署是用于安装Web的过程的术语 应用程序(第三方WAR或您自己的自定义Web 应用程序)到Tomcat服务器。
Web应用程序部署可以通过多种方式完成 在Tomcat服务器中:
- 静态(在Tomcat启动之前设置Web应用程序)
- 动态(通过直接操作已部署的Web应用程序(依赖于自动部署功能)或使用远程操作 Tomcat Manager Web应用程序)
Tomcat Manager是一个可以交互使用的Web应用程序 (通过HTML GUI)或以编程方式(通过基于URL的API)进行部署和 管理Web应用程序。
有许多方法可以执行依赖于的部署 经理网络应用程序Apache Tomcat为Apache Ant提供任务 构建工具。 Apache Tomcat Maven插件项目提供集成 与Apache Maven。还有一个名为Client Deployer的工具, 可以从命令行使用,并提供额外的 诸如编译和验证Web应用程序之类的功能 以及将Web应用程序打包成Web应用程序资源(WAR) 文件。
答案 1 :(得分:0)
您需要将文件放入正确的位置。需要将Java类文件放入WEB-INF / classes:
webapps/ROOT/WEB-INF/web.xml
webapps/ROOT/WEB-INF/classes/HelloWorld.class
然后启动Tomcat并查看Tomcat日志中是否存在错误。
答案 2 :(得分:0)
知道了。我创建的classes文件夹是&#34; C &#34;其中tomcat需要&#34; c &#34; lasses。